俄式乘法

来源:互联网 发布:java项目开发心得体会 编辑:程序博客网 时间:2024/04/29 11:23
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.
                                             
0 0
原创粉丝点击