输入两个正整数m和n,求其最小公倍数
a. 思路:先计算两个数的最大公约数,最小公倍数 = m * n / 最大公约数。下面给出计算最大公约数的过程:
i. c = m % n
ii. 如果c等于0,则n即为两个数的最大公约数
iii. 如果c不等于0,则m = n, n = c, 继续执行i
你这个叫做辗转相除法,稍等
#include <stdio.h>
int gcd(int a, int b) {
if(b == 0) {
return a;
} else {
return gcd(b, a % b);
}
}
int lcm(int a, int b) {
return (a * b) / gcd(a, b);
}
int main() {
int num1, num2, result;
printf("请输入两个正整数:\n");
scanf("%d %d", &num1, &num2);
result = lcm(num1, num2);
printf("%d 和 %d 的最小公倍数是 %d\n", num1, num2, result);
return 0;
}
不知道你这个问题是否已经解决, 如果还没有解决的话:#include<stdio.h>
int gcd(int a, int b)
{
if(b==0) return a;
return gcd(b,a%b);
}
int lcm(int a, int b)
{
return a/gcd(a,b)*b;
}
int main()
{
int m,n;
while(scanf("%d%d",&m,&n)!=EOF)
{
int temp;//保证m>n
if(m<n)
{
temp = m;
m = n;
n = temp;
}
printf("最大公因数为:%d\n",gcd(m,n));
printf("最小公倍数为:%d\n",lcm(m,n));
}
return 0;
}
/*
*/