プロが教える店舗&オフィスのセキュリティ対策術

javaで素数判断プログラム作成しましたが,うまく動きません。
以下のように作成しました。
5行目のint j=1;をint j=2;に変更すれば綺麗に動くのですが,j=1からスタートすると何も表示されずに処理が終わってしまいます。
なぜでしょうか。
お手すきの時で構いませんので教えて頂けませんでしょうか?

class PrimeNum{
public static void main(String[] args){
int i=2;
while(i<100){
int j=1;
while(j <= i){
if(i%j==0){
if((i/j) != 1 ){
j=i+1;
}
if(i==j){
System.out.print(i+" ");
}
}
j++;
}
i++;
}
}
}

A 回答 (1件)

iが2以上,j=1ならば,


if(i%j==0){ の結果はいつも0なので真。
if((i/j) != 1 ){ の結果はいつも2以上なので真であり,j=i+1が実行される。
j=i+1が実行されたなら if(i==j){ は偽となり,System.out.printは実行されない。
さらにj++されるのでjの値はi+2の計算結果となり,
while(j <= i){ は偽になるのでwhileループは終了する。


class PrimeNum {
public static void main(String[] args){
for (int i = 2; i < 100; i++) {
int j;
for (j = 2; j < i; j++) {
if (i % j == 0) {
break;
}
}
if (i == j) {
System.out.print(i + " ");
}
}
}
}
    • good
    • 0
この回答へのお礼

ありがとうございます☆彡

お礼日時:2014/01/18 16:12

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!