输入两个数,求最小公倍数和最大公约数
我写的答案是
#include <stdio.h>
int main(){
//定义两个边变量用来接收用户输入的数值
int a,b;
//提示用户输入两个数
printf("请用户输入两个数\n");
//接收用户输入的两个数
scanf("%d,%d",&a,&b);
//计算
int mov,les;
mov = a>b?a:b;
les =a<b?a:b;
for (int k=les; k>=1; k--) {
if(mov%k==0&&les%k==0){
printf("最大公约数就是%d\n",k);
break;
}
}
for (int i=1; ; i++) {
if((i*mov)%les==0){
printf("最小公倍数是%d\n",i*mov);
break;
}
}
return 0;
}
我自己试了试几个数儿,也算正确但是和老师给的标准答案不一样求解我做的到底对还是不对求大神帮忙分析一下我数学不是很好老师给的标准答案如下
#include <stdio.h>
int main(int argc, const char * argv[])
{
int num1 = 0;
int num2 = 0;
int gcd = 0; //最大公约数
int lcm = 0; //最小公倍数
printf("请输入两个数:\n");
scanf("%d%d", &num1, &num2);
int product = num1*num2;
if (num1 > num2)//始终让num1是最小数。
{
int temp = num1;
num1 = num2;
num2 = temp;
}
for (int i = num1; i > 0; i--) {
if (num1%i == 0 && num2%i == 0) {
gcd = i;
break;
}
}
lcm = product/gcd;
printf("gcd = %d\n", gcd);
printf("lcm = %d\n", lcm);
return 0;
}
求最大公约数和最小公倍数的方法不一样不知道我做的的对不对看老师的答案我也看不明白 |
|