6-5 Cプログラミング演習7.7.2除算による最大公約数の検索(4ポイント)
トピック
2つの正の整数の最大公約数(GCD)は、これら2つの整数を均等に除算できる最大の整数です。ユークリッドのアルゴリズム(投げたり回したりによる除算とも呼ばれます)を使用して、2つの数値の最大公約数を計算する関数を実装してください。
ユークリッドのアルゴリズム:2つの整数の最大公約数は、小さい方の数の最大公約数と2つの数の除算の余りに等しくなります。
たとえば、252と105の最大公約数を見つけます。
252%105 = 147であるため、252と105の最大公約数は147と105の最大公約数でもあります。
147%105 = 42、252と105の最大公約数、つまり147と105の最大公約数、つまり105と42の最大公約数というように、最終的に21を取得できます。このプロセスでは、大きい方の数が減少するため、同じ計算を実行して、一方がゼロになるまで2つの数を継続的に減少させます。このとき、ゼロになっていない残りの数は、2つの数の最大公約数です。
関数インターフェイスの定義:
int Gcd(int a, int b);
その中で、aとbは、ユーザーが入力した2つの正の整数です。
この関数は、aとbの最大公約数を返します。
aまたはbが0以下の場合、関数は-1を返します。
審判のテスト手順の例:
在这里给出函数被调用进行测试的例子:
#include <stdio.h>
int Gcd(int a, int b);
int main()
{
int a, b, c;
scanf("%d %d", &a, &b);
c = Gcd(a,b);
if (c != -1)
{
printf("%d\n", c);
}
else
{
printf("Input number should be positive!\n");
}
return 0;
}
/* 请在这里填写答案 */
入力サンプル:
これが一連の入力です。例えば:
15 20
サンプル出力:
対応する出力をここに示します。例えば:
5
ソースコード:
int Gcd(int a, int b)
{
int t;
if(a<=0||b<=0){
return -1;
}
if(a<b){
t=b;
b=a;
a=t;
}
while(b!=0)
{
a=a%b;
if(a<b){
t=b;
b=a;
a=t;
}
}
return a;
}