最大公约数和最小公倍数

/* 题目:输入两个正整数m和n,求其最大公约数和最小公倍数
程序分析:
1.最小公倍数=输入的两个数之积除于它们的最大公约数,关键是求出最大公约数;
2.求最大公约数用辗转相除法(又名欧几里德算法)
算法描述:
第一步:a ÷ b,令r为所得余数(0≤r 第二步:互换:置 a←b,b←r,并返回第一步

int main()
{
    int a,b,t,r,n;
    printf("请输入两个数字:\n");
    scanf("%d %d",&a,&b);
    if(a<b)
    {t=b;b=a;a=t;}
    r=a%b;
    n=a*b;
    while(r!=0)
    {
        a=b;
        b=r;
        r=a%b;
    }
    printf("这两个数的最大公约数是%d,最小公倍数是%d\n",b,n/b);
    
    return 0;
} */

#include <stdio.h>

int main()
{
    int num1, num2, num3;
    int least = 1;
    int i;
    printf("输入两个正整数:");
    scanf("%d %d", &num1, &num2);
    num3 = num1*num2;
    for (i = 2; i<=num1 && i<=num2; i++) {
        while (0==num1%i && 0==num2%i) {
            least *= i;
            num1 /= i;
            num2 /= i;
        }
    }
    printf("最大公约数:%d\n", least);
    printf("最小公倍数:%d\n", num3/least);
    return 0;
}

 

posted @ 2023-02-20 23:30  jason8826  阅读(61)  评论(0编辑  收藏  举报