最大公約数
code:gcd.c
int gcd(int x, int y) /* 関数 */
{
int t;
while (y != 0) {
t = x % y; x = y; y = t;
}
return x;
}
int main(void)
{
int x, y;
printf("二つの整数を入れてください: ");
scanf("%d%d", &x, &y);
printf("%d と %d の最大公約数は %d です。\n", x, y, gcd(x,y));
return 0;
}
三つの数の最大公約数を求めるにはどうすればよいだろうか。
最小公倍数(least common multiple)を求めるにはどうすればよいだろうか。 念のため,long 型・コマンドライン引数を使ったバージョンも挙げておく。
code:gcd2.c
long gcd(long x, long y)
{
long t;
while (y != 0) {
t = x % y; x = y; y = t;
}
return x;
}
int main(int argc, char *argv[])
{
long x, y;
if (argc != 3) {
printf("コマンドラインに2個の整数を与えてください。\n");
return 1;
}
printf("%ld と %ld の最大公約数は %ld です。\n", x, y, gcd(x,y));
return 0;
}