手工制作手机壳教程:C语言中公约数怎么求啊?????

来源:百度文库 编辑:查人人中国名人网 时间:2024/05/05 19:42:07
用C语言怎么求三个数的最大公约数啊!兄弟我想破头也没想出来,请各位朋友帮忙啊!!!!!!!!

设三个数是da,zhong xiao.
int i,a;
for(i=1,i<=xiao,i++)
{if(da/i==0&&zhong/i==0&&xiao/i==0)
a=i;}
//最后的a就是了

int a,b,c;
取a,b,c中最小的(这个算法知道吧),
赋值给k;
for(i=k;i<=k;i--)
{
对另两个大值取k 的余数,能整除时;
break;

}
t=i;
i就是a,b,c的最大公约数
说的不好多包涵

辗转相除法

前两位兄弟明显错了,他要的是最大公约数,按你们的算法,答案是1。还有第二个兄弟符号也写错了,取余是“%”。for循环内用“;”。
我的看法是
main()
{
int a,b,c,i,t,k[];
//找出最小的赋值给t
t=.....
for(i=1;i<=t;i++)
{
if(a%i==0&&b%i==0&&c%i==0)
k[]=i; //k数组用来存放所有公约数
}
//接下来用循环找出最大的数
while()
{
.
t=...
.
}//t为最大公约数
}//以上算法采用伪代码

如果3个数不大的话,可以采用循环遍历求解。
3个数太大的话,循环遍历就不切实际,只能用辗转相除法 。

求u,v 的最大公约数
int u,v,t,r;
if(v>u)
{t=u;u=v;v=t;}
while((r=u%v)!=0)
{u=v;
v=r;
}
return(v);