问题:输入两个正整数,以空格隔开,求最大公约数和最小公倍数,答案保证在int范围内
int main(void)
{int a,b,t,mult;
char ch;
scanf("%d%c%d",&a,&ch,&b);//自己想的是把空格的值赋值给ch
mult=ab;
if(a<b)
{a=t;
a=b;
b=t;
}
while(b!=0) //求最大公约数
{t=a%b;
a=b;
b=t;
}
printf("%d\n",a);
printf("%d\n",mult/a);//最小公倍数==(ab)/最大公约数
return 0;
}
楼主看看这个,流程图+代码(在C语言中用scanf,在C++中用scanf_s,无关紧要)
int main()
{
int m,n,a,b,t,temp,h;
printf("输入m和n\n");
scanf_s("%d%d", &m, &n);
a=m;b=n;
if(a<b)
{
t=a;a=b;b=t;
}
while(b!=0) //求最大公约数
{
temp=a%b;a=b;b=temp;
}
h=m*n/a;//求最小公倍数
printf("%d和%d的最大公约数是:%d\n",m,n,a);
printf("%d和%d的最小公倍数是:%d\n",m,n,h);
system("pause");
}
emmm,我写的代码用的思想几乎跟你这个相似,自己输入一些数,得到的结果也和预想的一样,但oj
就是不认同,我不知道错出在哪里....
我找到我的问题了,判断大小事,应该把a的值赋给t,而我写成了a=t.....谢谢了,大神!看了你的图,理解又加深了!!1