如何用C语言求最大公约数

た 入场券 2022-07-15 05:57 374阅读 0赞

方法一:

辗转相减法:用两个数中较大的数减去较小的数一直减到两个数相等为止

最大公约数M一定能能够被两个数同时整除即a=x*M,b=y*M故两个数相减之后的结果=M*z

  1. #define _CRT_SECURE_NO_WARNINGS 1
  2. #include<stdio.h>
  3. #include<stdlib.h>
  4. int MAX(int x, int y)
  5. {
  6. while (1)
  7. {
  8. if (x > y)
  9. {
  10. x = x - y;
  11. }
  12. if (x < y)
  13. {
  14. y = y - x;
  15. }
  16. if (x == y)
  17. return x;
  18. }
  19. }
  20. int main()
  21. {
  22. int a = 0;
  23. int b = 0;
  24. int result = 0;
  25. scanf("%d%d",&a, &b);
  26. result=MAX(a, b);
  27. printf("%d", result);
  28. system("pause");
  29. return 0;
  30. }

方法二:
辗转相除法求最大公约数:

  1. #define _CRT_SECURE_NO_WARNINGS 1
  2. #include<stdio.h>
  3. #include<stdlib.h>
  4. int MAX(int x, int y)
  5. {
  6. while (1)
  7. {
  8. if((x>y)&&x!=0&&y!=0)
  9. {
  10. x = x%y;
  11. }
  12. if((y>x)&&x!=0&&y!=0)
  13. {
  14. y = y %x;
  15. }
  16. if (x==0)
  17. return y;
  18. if (y == 0)
  19. return x;
  20. }
  21. }
  22. int main()
  23. {
  24. int a = 0;
  25. int b = 0;
  26. int result = 0;
  27. scanf("%d%d",&a, &b);
  28. result=MAX(a, b);
  29. printf("%d", result);
  30. system("pause");
  31. return 0;
  32. }

发表评论

表情:
评论列表 (有 0 条评论,374人围观)

还没有评论,来说两句吧...

相关阅读

    相关 C语言公约数详解版

    问题描述 求任意两个正整数的最大公约数(GCD)。 问题分析 如果有一个自然数a能被自然数b整除,则称a为b的倍数,b为a的约数。几个自然数公有的约数,叫做这几个自然数的

    相关 如何C语言公约数

    方法一: 辗转相减法:用两个数中较大的数减去较小的数一直减到两个数相等为止 最大公约数M一定能能够被两个数同时整除即a=x\M,b=y\M故两个数相减之后的结果=M\z