求两个数最大公约数

公约数,亦称"公因数"。它是指能同时整除几个整数的数。如果一个整数同时是几个整数的约数,称这个整数为它们的"公约数";公约数中最大的称为最大公约数。

例如 :4的倍数有 1,2,4;6的倍数有1,2,3,6,那么4和6的约数就是1,2,则最大公约数就是2.

求解思路:

求最大公约数可以使用欧几里得算法,也称辗转相除法。该算法的基本思想是用较大数除以较小数,然后用余数去除除数,再用上一次的除数去除上一次的余数,如此反复,直到余数为零时,当前除数即为最大公约数。

复制代码
 1 #pragma warning(disable:4996)
 2 #include<stdio.h>
 3 int a = 0, b = 0, c = 0;
 4 int main() {
 5     printf("输入两个数\n");
 6     
 7     scanf("%d%d", &a, &b);
 8     while (a!=b)
 9     {
10         if (a>b)
11         {
12             a = a - b;
13         }
14         else
15         {
16             c=a;
17             a=b;
18             b=c;
19         }
20     }
21     printf("最大公约数是:%d", a);
22     return 0;
23 }
复制代码

 解法二

复制代码
#pragma warning(disable:4996)
#include<stdio.h>
#include<stdbool.h>
int main() {
    int a = 0, b = 0;
    int v = 0;
    scanf("%d %d", &a, &b);
    do
    {
        if (a > b) {
            if (a != 0 && b !=0)
            {
                a = a % b;
                printf("a的%d\n", a);
                printf("b的%d\n", b);
                if (a == 1)
                {
                    printf("最大公约数是%d\n", a);
                    break;
                }
            }
            else
            {
                printf("最大公约数是%d\n", a);
                break;
            }
        }
        else
        {
            v = a;
            a = b;
            b = v;
        }
    } while (true);
    return 0;
}
复制代码

 

posted @   不知名de菜鸟  阅读(117)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架
点击右上角即可分享
微信分享提示