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

来源:互联网 发布:网络直播哪个好 编辑:程序博客网 时间:2024/05/02 02:15

常用算法:辗转相除法是求两个自然数的最大公约数的一种方法,也叫欧几里德算法

辗转相除法的原理如下:

例如,求(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>



0 0
原创粉丝点击