设为首页 加入收藏

TOP

辗转相除法求最大公约数和最小公倍数
2014-11-11 12:30:13 来源: 作者: 【 】 浏览:30
Tags:辗转 除法 最大 公约 最小 倍数

  1: /*辗转相除法基于如下原理:两个整数的最大公约数等于其中较小的数和两数的差的最大公约数。


  2: 例如,252和105的最大公约数是21(252 = 21 × 12;105 = 21 × 5);


  3: 因为252 105 = 147,所以147和105的最大公约数也是21。在这个过程中,较大的数缩


  4: 小了,所以继续进行同样的计算可以不断缩小这两个数直至其中一个变成零。这时,所剩下的


  5: 还没有变成零的数就是两数的最大公约数。


  6: */


  7: #include


  8:


  9: int getGCDAndLCM(int a,int b){


  10: int max=a>b a:b;//将较大的数赋给max


  11: int min=(max=a) b:a;//将较小的数赋给min


  12: int temp;//暂时存储变量


  13: while(max!=0){


  14: temp=min%max;


  15: min=max;


  16: max=temp;


  17: }


  18: printf("最大公约数为%d\n",min);


  19: printf("最小公倍数为%d\n",a*b/min);


  20: }


  21:


  22: int main(){


  23: printf("输入两个数整数值\n");


  24: int a,b;


  25: scanf("%d",&a);


  26: scanf("%d",&b);


  27: getGCDAndLCM(a,b);


  28: return 0;


  29: }


  编辑特别推荐:


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇Win32平台下如何安装Openssl 下一篇1~9分成1:2:3的三个3位数

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: