#11117: 取出兩個公因數 如何取最大


gordon636798 (unknown)


#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{
int a,b;
int x;

scanf("%d %d", &a, &b);

for(x=1;(x<=a)&&(x<=b);x++)
{

if ((a%x!=0)||(b%x!=0))
{
continue;
}
printf("%d\n",x);
}

system("PAUSE");
return 0;
}

#11179: Re:取出兩個公因數 如何取最大


d2513850 (林勇智)


#include
#include

int main(int argc, char *argv[])
{
int a,b;
int x;

scanf("%d %d", &a, &b);

for(x=1;(x<=a)&&(x<=b);x++)
{

if ((a%x!=0)||(b%x!=0))
{
continue;
}
printf("%d\n",x);
}

system("PAUSE");
return 0;
}

請用"輾轉相除法"去解:
若x<y的話,則gcd函數得到gcd(y,x%y)=gcd(y,x):
int gcd(int x,int y){
    if(y==0){
        return x;
    }else{
        return gcd(y,x%y);
    }
}