用c语言编写求最大公约数的程序 ,不需要辗转相除法,最简单的FOR循环或者Whlie就行

2025-03-22 06:29:08
推荐回答(3个)
回答1:

不用辗转相除,只需要根据数学定义,找出最大的可以同时整除两个数值,即为最大公约数。

代码如下:

int gcd(int a,int b)//求a,b的最大公约数,并返回。
{
    int r = a>b?b:a;
    while(r)
    {
        if(a%r==0 && b%r==0)break;//最大的可以同时整除二者的数,即为最大公约数。
        r--;
    }
    
    return r;
}

回答2:

#include
#include
int main()
{
int a,b,t,x,y;
scanf("%d%d",&x,&y);
if(x>y)
{t=x;
x=y;
y=t;}
for(a=x;a>=1;a--)
{if(x%a==0&&y%a==0); break;}
printf("最大公约数:%d",a);
b=a*(x/a)*(y/a);
printf("最小公倍数:%d",b);
system("pause");
return 0;
}
公约公倍有了。。不需要可以去了。。DEV c++是这样的。。。VC可以把第二行#include和倒二行的 system("pause");去掉。。。不明白再追问

回答3:

输入两个正整数,求它的最大公约数指!
#include
void main()
{
int a,b,c,i; //c为最大公约数
printf("input a,b:\n");
scanf("%d %d\n",&a,&b);
if(a>b)
{
for(i=b;i>=1;i--) //倒过来算,第一个就是最大公约数

if(a%i==0 && b%i==0) c=i;

}
else
for(i=a;i>=1;i--)

if(a%i==0 && b%i==0) c=i;

printf("c=%d\n",c);
}
思路应该不复杂!编译了,没错误