对于这个经典的求最大公约数,最小公倍数的C语言程序,我有疑问.输入两个正整数m和n,求其最大公约数和最小公倍数.1.程序分析:利用辗除法.2.程序源代码:main() { int a,b,num1,num2,temp; printf("please input two numbers:\n"); scanf("%d,%d",&num1,&num2); if(num1%num2==0) { temp=num1; num1=num2; num2=temp; } a=num1;b=num2; while(b!=0)/*利用辗除法,直到b为0为止*/ { temp=a%b; a=b; b=temp; } printf("gongyueshu:%d\n",a); printf("gongbeishu:%d\n",num1*num2/a); } 麻烦帮我看一下这个程序有没有错,如果有哪里错了.还有,麻烦从第一个IF开始给我写一下每句的注释.
问题描述:
对于这个经典的求最大公约数,最小公倍数的C语言程序,我有疑问.
输入两个正整数m和n,求其最大公约数和最小公倍数.
1.程序分析:利用辗除法.
2.程序源代码:
main()
{
int a,b,num1,num2,temp;
printf("please input two numbers:\n");
scanf("%d,%d",&num1,&num2);
if(num1%num2==0) { temp=num1;
num1=num2;
num2=temp;
}
a=num1;b=num2;
while(b!=0)/*利用辗除法,直到b为0为止*/
{
temp=a%b;
a=b;
b=temp;
}
printf("gongyueshu:%d\n",a);
printf("gongbeishu:%d\n",num1*num2/a);
}
麻烦帮我看一下这个程序有没有错,如果有哪里错了.还有,麻烦从第一个IF开始给我写一下每句的注释.
答
main()
{
int a,b,min,max,i,j;
scanf("%d%d",&a,&b);
if(a>b) {
max=b;
min=a;
}else {
max=a;
min=b;
}
for(max=a;i>=1;i--) {
if(a%i==0&&b%i==0) {
printf("最大公约数是%d\n",i);
break;
}
}
for(j=min;;j++) {
if(j%a==0&&j%b==0) {
printf("最小公倍数为%d\n",j);
break;
}
}
}