這裏是問題:如何編寫一個簡單的Java程序,在兩個數字之間找到最大公約數?
「寫一個方法名爲GCD接受兩個整數作爲參數和返回兩個數的最大公約數兩個整數a的最大公約數(GCD)和B是最大的整數是a和b的因數任何數字和1的GCD是1,任何數字和0的GCD是該數字
計算兩個數字的GCD的一種有效方式是使用歐幾里德的算法,其狀態如下:
GCD(A, B) = GCD(B, A % B)
GCD(A, 0) = Absolute value of A"
我真的很困惑, w解決這個問題。我只想提供一些提示和提示,以瞭解到目前爲止我在程序中做了什麼錯誤。 (我必須放入掃描儀,這是我老師的要求。) 不要給我一個完整的代碼,因爲我有點想自己解決這個問題。也許只是給我一個提示,我如何將這個公式結合到上面。 (如果你想知道爲什麼我放入== 0,這是因爲我認爲如果你有兩個數字,比如說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);
}
}
提示 - 您需要遞歸調用。 – SergeyS
您將'a'和'b'作爲參數傳遞給您的方法,因此不需要從控制檯再次讀取它們(並且'console'變量在方法中不可見,所以您的代碼無法編譯) 。另外,如果輸入,第一個循環看起來非常無限。 – jlordo
*我會更喜歡如果循環... *這是相當複雜的,因爲如果沒有循環 – zapl