-2

私のプログラムはユーザーに 2 つの数字を要求し、それらの数字を関数に渡す必要があります。私の関数は、「ユークリッドのアルゴリズムを使用して 2 つの値の最大公約数 (GCD) を特定することになっています。この値が 1 より大きく、2 つの数値の小さい方より小さい場合は true を返します。call-by-reference パラメーターを に設定します。 GCD の値。main() で、GCD と、関数が true または false を返したかどうかを出力します。」どうすればいいですか?

int gcd (int a, int b)
{
    int c;

    if ( b == 0 )
        return a;

    else
        while ( b != 0 )
        {
            c = b;
            b = a % b;
            a = c;
        }

        return a;
}
4

2 に答える 2

1

おい、それはもっと簡単だったはずがない... STFG

コードは例 2 に近づいていますが、この行にエラーがあります

   if ( b == 0 )
        return a;

確認と返却は逆の順序で行う必要があります

この wiki の実装を疑似コードで試してみます。

function gcd(a, b)
    while b ≠ 0
       t := b
       b := a mod t
       a := t
    return a

しかし、少なくとも何かをググってみるべきです。=)

于 2013-04-11T01:26:33.297 に答える
0

これはあなたが使用している最も難しいロジックです。ブログから入手できる非常に簡単なロジックがあります。

http://www.programmingtunes.com/finding-greatest-common-divisor-of-2-numbers-c/ :

//greatest common divisor of 2 numbers in C++
#include <iostream>
using namespace std;
void main()
{
int x = 24;
int y = 18;
int temp = 1 ;
for(int i = 2; i<=y; i++)
{
    if(x%i == 0 && y%i == 0)
    {
    temp = i;
    }

}

cout<<temp<<endl;

}
于 2014-03-22T14:36:44.080 に答える