前提・実現したいこと
Javaで素数を表示したいです。
1〜コマンドライン引数で入力された数まで(入力されなかったら200まで)
の内で素数であるものを判定し、10個置きに表示する。
理想結果
$ java Primes
2 3 5 7 11 13 17 19 23 29
31 37 41 43 47 53 59 61 67 71
73 79 83 89 97 101 103 107 109 113
127 131 137 139 149 151 157 163 167 173
179 181 191 193 197 199
$ java Primes 59
2 3 5 7 11 13 17 19 23 29
31 37 41 43 47 53 59
発生している問題・エラーメッセージ
自分の書いたコードでは、127まで判定できるのですが、それ以降の素数を素数として判定してくれません。
該当のソースコード
Jaca
1import java.util.ArrayList; 2 3public class GeneratePrimes{ 4 5ArrayList<Integer> primelist = new ArrayList<>(); 6 7 void prime(String[] args){ 8 check(args); 9 print(args); 10 } 11 12 void check(String[] args){ 13 Integer max = 200; 14 if(args.length!= 0){ 15 max = Integer.parseInt(args[0]); 16 } 17 18 for(Integer i = 2;i<=max;i++){ 19 for(Integer j = 2; j <= i; j++){ 20 if( i % j == 0 && i!= j){ 21 //System.out.printf("i: %s j: %s" ,i,j); 22 //System.out.println(""); 23 break; 24 } 25 if( i == j) { 26 primelist.add(i); 27 //System.out.printf("Prime i: %s j: %s" ,i,j); 28 //System.out.println(""); 29 } 30 } 31 } 32 } 33 34 void print(String[] args){ 35 for(Integer k=0; k<primelist.size(); k++){ 36 System.out.printf(" %s",primelist.get(k)); 37 if((k+1)%10==0) System.out.println(""); 38 } 39 System.out.println(""); 40 } 41 42 public static void main(String[] args){ 43 GeneratePrimes app = new GeneratePrimes(); 44 app.prime(args); 45 } 46}
試したこと
動作を確認するためにi,jを出力してみたのですが、なぜか以下のようになります。
$ java GeneratePrimes
Prime i: 2 j: 2
Prime i: 3 j: 3
i: 4 j: 2
Prime i: 5 j: 5
i: 6 j: 2
Prime i: 7 j: 7
i: 8 j: 2
i: 9 j: 3
i: 10 j: 2
Prime i: 11 j: 11
i: 12 j: 2
Prime i: 13 j: 13
i: 14 j: 2
i: 15 j: 3
i: 16 j: 2
Prime i: 17 j: 17
i: 18 j: 2
Prime i: 19 j: 19
i: 20 j: 2
i: 21 j: 3
i: 22 j: 2
Prime i: 23 j: 23
i: 24 j: 2
i: 25 j: 5
i: 26 j: 2
i: 27 j: 3
i: 28 j: 2
Prime i: 29 j: 29
i: 30 j: 2
Prime i: 31 j: 31
i: 32 j: 2
i: 33 j: 3
i: 34 j: 2
i: 35 j: 5
i: 36 j: 2
Prime i: 37 j: 37
i: 38 j: 2
i: 39 j: 3
i: 40 j: 2
Prime i: 41 j: 41
i: 42 j: 2
Prime i: 43 j: 43
i: 44 j: 2
i: 45 j: 3
i: 46 j: 2
Prime i: 47 j: 47
i: 48 j: 2
i: 49 j: 7
i: 50 j: 2
i: 51 j: 3
i: 52 j: 2
Prime i: 53 j: 53
i: 54 j: 2
i: 55 j: 5
i: 56 j: 2
i: 57 j: 3
i: 58 j: 2
Prime i: 59 j: 59
i: 60 j: 2
Prime i: 61 j: 61
i: 62 j: 2
i: 63 j: 3
i: 64 j: 2
i: 65 j: 5
i: 66 j: 2
Prime i: 67 j: 67
i: 68 j: 2
i: 69 j: 3
i: 70 j: 2
Prime i: 71 j: 71
i: 72 j: 2
Prime i: 73 j: 73
i: 74 j: 2
i: 75 j: 3
i: 76 j: 2
i: 77 j: 7
i: 78 j: 2
Prime i: 79 j: 79
i: 80 j: 2
i: 81 j: 3
i: 82 j: 2
Prime i: 83 j: 83
i: 84 j: 2
i: 85 j: 5
i: 86 j: 2
i: 87 j: 3
i: 88 j: 2
Prime i: 89 j: 89
i: 90 j: 2
i: 91 j: 7
i: 92 j: 2
i: 93 j: 3
i: 94 j: 2
i: 95 j: 5
i: 96 j: 2
Prime i: 97 j: 97
i: 98 j: 2
i: 99 j: 3
i: 100 j: 2
Prime i: 101 j: 101
i: 102 j: 2
Prime i: 103 j: 103
i: 104 j: 2
i: 105 j: 3
i: 106 j: 2
Prime i: 107 j: 107
i: 108 j: 2
Prime i: 109 j: 109
i: 110 j: 2
i: 111 j: 3
i: 112 j: 2
Prime i: 113 j: 113
i: 114 j: 2
i: 115 j: 5
i: 116 j: 2
i: 117 j: 3
i: 118 j: 2
i: 119 j: 7
i: 120 j: 2
i: 121 j: 11
i: 122 j: 2
i: 123 j: 3
i: 124 j: 2
i: 125 j: 5
i: 126 j: 2
Prime i: 127 j: 127
i: 128 j: 2
i: 129 j: 3
i: 130 j: 2
i: 131 j: 131
i: 132 j: 2
i: 133 j: 7
i: 134 j: 2
i: 135 j: 3
i: 136 j: 2
i: 137 j: 137
i: 138 j: 2
i: 139 j: 139
i: 140 j: 2
i: 141 j: 3
i: 142 j: 2
i: 143 j: 11
i: 144 j: 2
i: 145 j: 5
i: 146 j: 2
i: 147 j: 3
i: 148 j: 2
i: 149 j: 149
i: 150 j: 2
i: 151 j: 151
i: 152 j: 2
i: 153 j: 3
i: 154 j: 2
i: 155 j: 5
i: 156 j: 2
i: 157 j: 157
i: 158 j: 2
i: 159 j: 3
i: 160 j: 2
i: 161 j: 7
i: 162 j: 2
i: 163 j: 163
i: 164 j: 2
i: 165 j: 3
i: 166 j: 2
i: 167 j: 167
i: 168 j: 2
i: 169 j: 13
i: 170 j: 2
i: 171 j: 3
i: 172 j: 2
i: 173 j: 173
i: 174 j: 2
i: 175 j: 5
i: 176 j: 2
i: 177 j: 3
i: 178 j: 2
i: 179 j: 179
i: 180 j: 2
i: 181 j: 181
i: 182 j: 2
i: 183 j: 3
i: 184 j: 2
i: 185 j: 5
i: 186 j: 2
i: 187 j: 11
i: 188 j: 2
i: 189 j: 3
i: 190 j: 2
i: 191 j: 191
i: 192 j: 2
i: 193 j: 193
i: 194 j: 2
i: 195 j: 3
i: 196 j: 2
i: 197 j: 197
i: 198 j: 2
i: 199 j: 199
i: 200 j: 2
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答5件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/04/27 09:40