您的位置:首页 > 编程语言 > C语言/C++

C++求最大公约数和最小公倍数

2016-05-10 23:07 363 查看
常用算法:辗转相除法是求两个自然数的最大公约数的一种方法,也叫欧几里德算法

辗转相除法的原理如下:

例如,求(319,377):

∵ 319÷377=0(余319)

∴(319,377)=(377,319);

∵ 377÷319=1(余58)

∴(377,319)=(319,58);

∵ 319÷58=5(余29),

∴ (319,58)=(58,29);

∵ 58÷29=2(余0),

∴ (58,29)= 29;

∴ (319,377)=29.
通过辗转相除从而得到最大公约数,暂时想到这个方法。以后再进行补充,以备忘。求最小公倍数就是这

两个数的乘积除以最大公约数即是,所以关键的问题还是怎么求最小公约数。C++代码如下:

<span style="font-family:Times New Roman;">#include<cstdio>
#include<cassert>
#include<cmath>
int main(){
long numA,numB,temp,mul;
scanf("%d %d",&numA,&numB);
if(numA<numB){
temp=numA;
numA=numB;
numB=temp;
}

mul=numA*numB;
while(numA%numB){
temp=numA%numB;
numA=numB;
numB=temp;
}
printf("最小公倍数:%d\n",mul/numB);
printf("最大公约数:%d\n",numB);
return 0;
}</span>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c语言 算法