第4回資料 正誤表
誤:
1
2
3
4
5
6
7
8
9
10
|
int testNumber = 10000019; // 素数かも知れない数
// 除数で割り切れず、除数が「素数かも知れない数」より小さい間繰り返す
for (int divisor = 2; // 除数
(testNumber % divisor) != 0 && divisor < testNumber;
divisor = divisor + 1)
; //繰り返しの中身は空なので、セミコロンを書く
// 除数が「素数かも知れない数」に等しくなったときは素数
if (testNumber == divisor)
System.out.println(testNumber + "は素数です。");
|
|
正:
1
*
2
3
4
5
6
7
8
9
10
|
int testNumber = 10000019; // 素数かも知れない数
int divisor; // 除数
// 除数で割り切れず、除数が「素数かも知れない数」より小さい間繰り返す
for (divisor = 2; // 除数
(testNumber % divisor) != 0 && divisor < testNumber;
divisor = divisor + 1)
; //繰り返しの中身は空なので、セミコロンを書く
// 除数が「素数かも知れない数」に等しくなったときは素数
if (testNumber == divisor)
System.out.println(testNumber + "は素数です。");
|
|
「誤」の3行目のように、for文の ( ) 内で変数 (divisor)を宣言した場合、その変数は for 文の中でしか使えなくなります。そのため、for
文の外で変数を使う(9行目のdivisor)とエラーになってしまいます。
この問題を解決するために、「正」の1行目と2行目の間で変数を宣言し、for 文の ( ) 内では代入をするだけにします。
Hidehiko Masuhara, October 2000