演習(ユークリッドの互除法)の解答例

出典: CourseWiki

プログラム例

0001:public class Euclid {
0002:    public static void main(String[] arg) {
0003:        System.out.print("Enter an integer A: ");
0004:        int a = Keyboard.intValue();
0005:        System.out.print("Enter an integer B: ");
0006:        int b = Keyboard.intValue();
0007:
0008:        while (a > 0 && b > 0) {  // a, bともに0より大きい
0009:            if (a > b) {
0010:                a = a % b;        // a > b のとき
0011:            } else {
0012:                b = b % a;        // a <= b のとき
0013:            }
0014:            if (a == 0) {         // a が 0 ならば答えは b
0015:                System.out.println("The result is " + b);
0016:            } else if (b == 0) {  // b が 0 ならば答えは a
0017:                System.out.println("The result is " + a);
0018:            }
0019:        }
0020:    }
0021:}
0022:

実行例

% java Euclid
Enter an integer A: 24
Enter an integer B: 8
The result is 8
% java Euclid
Enter an integer A: 144
Enter an integer B: 84
The result is 12

解説

なぜこれで答えが求まるかは少し難しいかもしれませんが,コーディング するには説明の各文をそのままコードに落とせばできるでしょう.a と b が 同時に 0 になることはないので,16 行目の else はなくてもかまいません.

変数名として大文字の A, B を選んだ人は,Javaでは変数名は小文字から始める習慣だったことを思い出しましょう.

ナビゲーション