計算機プログラミングI

第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