考慮以下Java程序時:無限循環印刷N×N的表
public class RelativelyPrime {
public static void main(String[] args) {
int N = Integer.parseInt(args[0]); // Dimensions of grid
int i, j;
int r; // Remainder when i is divided by j
for (i = 1; i <= N; i++) {
for (j = 1; j <= N; j++) {
do { // Using Euclidean algorithm
r = i % j;
i = j;
j = r;
} while (r > 0);
if (i == 1) System.out.print("*");
else System.out.print(" ");
}
System.out.println();
}
}
}
此程序打印一個N×N的表(或矩陣,如果你喜歡),其中N是一個命令行參數。
如果i和j是相對的,則(i,j)-entry是*
,或者如果它們不是相對質數,則爲單個空白。當我通過輸入程序運行程序時,例如,java RelativelyPrime 3
它無休止地打印*
。這是爲什麼發生?