俄式乘法

description俄式乘法:又被稱爲俄國農夫法,其實就是兩個數相乘,變相的算法。
思路:假設偶兩個數n,m

description俄式乘法,又被稱爲俄國農夫法,它是對兩個正整數相乘的非主流算法。假設m和n是兩個正整數,我們要計算它們的積。它的主要原理如下:
①if n%2 等於1,則總數加m,否則m加倍,n折半向上取整
②重複①至n等於1,得到的總數就是兩個數的乘積。 
該算法只包括折半,加倍,相加等幾個簡單操作,因此實現速度非常快。具體代碼如下(c++):
#include <iostream>
#include <math.h>
using namespace std;
int multi(int n,int m){
	int sum=0;
	while(n>1){
		if(n%2==1) 
			sum+=m;
		m=m*2;
		n=ceil(n/2);
		cout<<n<<" "<<m<<endl;
	}
	sum+=m;
	return sum;
}
void main(){
	int n,m;
	cout<<"請輸入兩個數:" ;
	cin>>n;
	cin>>m;
	cout<<n<<","<<m<<"的相乘爲"<<multi(n,m)<<endl;
}
驗證:
請輸入兩個數:12 4
6 8
3 16
1 31
12,4的乘積爲48.


發佈了44 篇原創文章 · 獲贊 15 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章