/*
Name:
Copyright:
Author:
Date: 30/07/17 09:21
Description:
【程序16】题目:输入两个正整数m和n,求其最大公约数和最小公倍数。
程序分析:辗转相除法 又名欧几里德算法
设两数为a、b(a>b),求a和b最大公约数(a,b)的步骤如下:
用a除以b(a≥b),得a÷b=q......r1(0≤r1)。
若r1 = 0,则(a,b)=b;
若r1 ≠0,则再用b除以r1,得b÷r1=q......r2 (0≤r2).
若r2=0,则(a,b)=r1,
若r2≠0,则继续用r1除以r2,……
如此下去,直到能整除为止。其最后一个余数为0的除数即为(a, b)的最大公约数。
例如:a=25,b=15,a/b=1......10,
b/10=1......5,
10/5=2.......0,
最后一个余数为0d的除数就是5, 5就是所求最大公约数。
*/
#include <stdio.h>
int main()
{
int m,n,temp,a,b;
printf("\n");
while(printf("请输入两个正整数:") && scanf("%d %d",&m,&n) != EOF)
{
if(m < n)
{
temp = m;
m = n;
n = temp;
}
a = m;
b = n;
while(b != 0)
{
temp = a % b; //r1
a = b;
b = temp;
}
printf("最大公约数为:%d\n",a);
printf("最大公倍数为:%d\n\n",m * n / a);
}
return 0;
}
C语言——实例016 最大公约数,最小公倍数
最新推荐文章于 2022-11-17 10:52:38 发布