PTA 6-5 Cプログラミング演習7.7.2フェーズ(4ポイント)に分割して最大公約数を見つける

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;
}

おすすめ

転載: blog.csdn.net/Anemia_/article/details/111684999