打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
求两个数的最大公约数的三种做法

1.相减法

两个数,相等时,最大公约数为他们其中任意一个。不相等时,用大数减小数。得到的差和之前的那个小数再次相减,直到两个数相等,这两个中,任意一个都是最大公约数。(代码如下)

  1. #include<stdio.h>
  2. int main()
  3. {
  4. int a = 0;
  5. int b = 0;
  6. printf('请任意输入两个数:');
  7. scanf('%d%d', &a, &b);
  8. while((a-b) != 0)
  9. {
  10. if(a>b)
  11. a = a-b;
  12. else
  13. b = b-a;
  14. }
  15. printf('最大公约数为:%d\n', b);
  16. return 0;
  17. }

2.穷举法

如果大数可以整除小数,那么最大公约数为小数。如果不能整除小数,那么这两个数就按大到小依次对比小数小的数求余,遇到都能够整除的,就是最大公约数。(代码如下)

  1. #include<stdio.h>
  2. int main()
  3. {
  4. int a = 0;
  5. int b = 0;
  6. printf('请任意输入两个数:');
  7. scanf('%d%d', &a, &b);
  8. if(a>=b)
  9. {
  10. int i =0;
  11. for(i=b; i>=1; i--)
  12. {
  13. if((a%i)==0 && (b%i)==0)
  14. {
  15. printf('最大公约数为:%d\n', i);
  16. break;
  17. }
  18. }
  19. }
  20. else
  21. {
  22. int j = 0;
  23. for(j=a; j>0; j--)
  24. {
  25. if((a%j)==0 && (b%j)==0)
  26. {
  27. printf('最大公约数为:%d\n', j);
  28. break;
  29. }
  30. }
  31. }
  32. return 0;
  33. }

3.辗转相除法

用大数对小数求余,若余数为0,则除数为最大公约数。若余数不为0,将此余数作为除数,小数作为被除数,重新求余,直到余数为0为止。此时的最大公约数为余数。例如:27和6.  27%6=3.  6%3=0.  所以最大公约数为3.(代码如下)

  1. #include<stdio.h>
  2. int main()
  3. {
  4. int a = 0;
  5. int b = 0;
  6. printf('请输入两个数:');
  7. scanf('%d%d', &a, &b);
  8. if(a >= b)
  9. {
  10. int c = a%b;
  11. while(c != 0)
  12. {
  13. a = b;
  14. b = c;
  15. c = a%b;
  16. }
  17. printf('最大公约数为:%d\n', b);
  18. }
  19. else
  20. {
  21. int d = b%a;
  22. while(d != 0)
  23. {
  24. b = a;
  25. a = d;
  26. d = b%a;
  27. }
  28. printf('最大公约数为:%d\n', a);
  29. }
  30. return 0;
  31. }
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
求两个数的最大公约数的三种算法
C 之while循环
C经典问题整理(一)(素数,公倍公约数,斐波那契数列)
bash Linux 文件判断,if
c语言中四个数比较大小问题
函数典型程序
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服