ここに質問があります:
「2つの整数をパラメーターとして受け入れ、2つの数値の最大公約数を返すgcdという名前のメソッドを記述します。2つの整数aとbの最大公約数(GCD)は、aとbの両方の因数である最大整数です。任意の数と1のGCDは1で、任意の数と0のGCDはその数です。
2つの数値のGCDを計算する1つの効率的な方法は、ユークリッドのアルゴリズムを使用することです。
GCD(A, B) = GCD(B, A % B)
GCD(A, 0) = Absolute value of A"
この問題を解決する方法について私は本当に混乱しています。私がこれまでに持ってきたプログラムで何が間違っていたかに関するヒントとヒントが欲しいだけです。(私はスキャナーを設置しなければなりません。それは私の先生の要件です。)自分でこれを解決したいので、完全なコードを与えないでください。たぶん、上で見たこの式をどのように組み込むかについてのヒントを教えてください。(そして、なぜ== 0を入れたのか疑問に思っているのは、2つの数値、たとえば0と90がある場合、それらのGCDは0になると思いますか?)
また、私のコードにはwhileループが含まれている必要があります...ループであれば...
前もって感謝します!:)
私の現在のプログラム:
public static void main(String[] args) {
Scanner console = new Scanner(System.in);
int a = console.nextInt();
int b = console.nextInt();
gcd (a, b);
}
public static void gcd(int a, int b) {
System.out.print("Type in two numbers and I will print outs its Greatest Common Divisor: ");
int gcdNum1 = console.nextInt();
int gcdNum2 = console.nextInt();
while (gcdNum1 == 0) {
gcdNum1 = 0;
}
while (gcdNum2 > gcdNum1) {
int gcd = gcdNum1 % gcdNum2;
}
System.out.print(gcdNum1 + gcdNum2);
}
}
再帰的な方法は次のとおりです。
static int gcd(int a, int b)
{
if(a == 0 || b == 0) return a+b; // base case
return gcd(b,a%b);
}
whileループの使用:
static int gcd(int a, int b)
{
while(a!=0 && b!=0) // until either one of them is 0
{
int c = b;
b = a%b;
a = c;
}
return a+b; // either one is 0, so return the non-zero value
}
私が返すときa+b
、それらの1つが0であると仮定して、実際にはゼロ以外の数を返します。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加