歌谱简谱网梅花泪:关于用C求最大公约数的题目!

来源:百度文库 编辑:中科新闻网 时间:2024/04/29 14:42:20
大家来看一下这是求最大公约数的吗,怎么我运行是结果不对呢!
#include<stdio.h>
int fun(int num1,int num2)
{
int r;
if(num1<num2)
{
r=num1;num1=num2;num2=r;
}
r=num1%num2;
while(r)
{
num1=num2;num2=r;r=num1%num2;
}
return num2;
}
main()
{
int x,y,z;
scanf("%d,%d",&x,&y);
z=fun(x,y);
printf("zuidagongyueshu=%d\n",z);
}
若不是 还望相告,谢谢!

main()
{int p,r,n,m,t;
printf("输入两个数");
scanf("%d,%d",&n,&m);
if(n<m)
{t=n;
n=m;
m=t;
}
p=n*m;
while(m!=0)
{r=n%m;
n=m;
m=r;
}
printf("最大公约数为:%d",n);
---------------------------
如果要求最小公倍数,则
printf("最小公倍数:%d",p/n);
==================
这条题目昨天学妹刚问我的
所以很有印象
很高兴能帮助你

while循环中的r=num1%num2;放在num1=num2;num2=r;之前就对了
你的答案中,将r赋值给num2时是上一个r,相当于又后退一步