1辗转相除法求最大公因数余最小公倍数
辗转相除法是利用以下性质来确定两个正整数 a 和 b 的最大公因子的:
⒈ 令r为a/b所得余数(0≤r)
若 r= 0,算法结束;b 即为答案。
⒉ 互换:置 a←b,b←r,并返回第一步。
int main12()//辗转相除法求最大公因数余最小公倍数
{
int a, b, k,temp,m,n;
printf("输入整数a,b:");
scanf("%d%d", &a, &b);
m = a, n = b;
if (a < b)
{
k = b;
b = a;
a = k;
}
while (b != 0)
{
temp = a % b;
a = b;
b = temp;
}
printf("最大公因数%d\n", a);
printf("最小公倍数%d\n", m * n / a);
return 0;
}
2短除法求最大公因数余最小公倍数
int main()//短除法求最大公因数余最小公倍数
{
int f,temp, m, n,i;
f = 1;
printf("输入整数a,b:");
scanf("%d%d", &m, &n);
for (i = 2; i <= m && i <= n;)
{
while (m % i == 0 && n % i == 0)
{
f *= i;
m /= i;
n /= i;
}
i++;
}
printf("最大公因数%d\n", f);
printf("最小公倍数%d\n", m*n/f);
return 0;
}