★★ Java の宿題ここで答えます Part 61 ★★
at TECH
915:デフォルトの名無しさん
07/07/12 04:03:53
>>907
効率は悪いけど元のソースを尊重するならこんな感じ
割り切れなかったらすぐに素数と判断するのではなく
最後まで割り切れなかった時だけ素数と判断しないと奇数が全部素数になってしまう
ほかにはループを途中で終了するためのbreakというキーワードを覚えたほうがいい
あとクラス名は大文字で始めるのが一般的
import java.io.*;
class lf1sosu {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
System.out.println("整数を入力してください。");
String strn = br.readLine();
int n = Integer.parseInt(strn);
for(int i=2; i<=n; i++ ){ // 検査する数iを2からnまで変化させる
for(int g=2; g<=i; g++ ){ // 割る数gを2からiまで変化させる
// 素数であっても最後にgにiが入ると割り切ることができる
int amari = i % g; // i/gの余りを求める
if (amari == 0 ){ // 余りが0、つまり割り切れた場合
if (g==i){ // 検査する数と割る数が同じなら
System.out.println( "素数 = " + i); // 検査する数より小さい数で割り切れなかったのでiは素数
} else {
g = i + 1; // 検査する数より小さい数で割り切れたら素数ではないので
// gにiより大きい数を代入してループを途中で終了する
// こう書くよりもbreak;を使った方がいい
}
} // 割り切れなかった場合は次のgに進む
}
}
}
}
次ページ続きを表示1を表示最新レス表示スレッドの検索類似スレ一覧話題のニュースおまかせリスト▼オプションを表示暇つぶし2ch
4157日前に更新/337 KB
担当:undef