2から1000000までの素数を求めると、どのくらい計算時間がかかるかのコードなんですが、NetBeansで実行すると、「行が長すぎます、折り返しモードに切り替えて行全体を表示してください。」
とでます。
実行結果を10桁ごとに表示したいです。
java
1 2 3import java.util.ArrayList; 4 5public class Main { 6 static ArrayList<Integer> diPrime_Catalog = new ArrayList<Integer>(); 7 8 public static void main(String[] args) { 9 int min, max, n; 10 n = 1000000; 11 long start, stop, elapsed; 12 start = System.currentTimeMillis(); 13 MakePrime(n); 14 stop = System.currentTimeMillis(); 15 elapsed = stop-start; 16 int iTimeMS, iTimeSec, iTimeMinutes, iTimeHours; 17 iTimeMS = (int)elapsed; 18 iTimeSec = (int)Math.floor(iTimeMS / 1000); 19 iTimeMS = iTimeMS % 1000; 20 iTimeMinutes = (int)Math.floor(iTimeSec / 60); 21 iTimeSec = iTimeSec % 60; 22 iTimeHours = (int)Math.floor(iTimeMinutes / 60); 23 iTimeMinutes = iTimeMinutes % 60; 24 System.out.printf("処理時間 %d時間 %d分 %d秒 %dミリ秒%n", 25 iTimeHours, iTimeMinutes, iTimeSec, iTimeMS); 26 System.out.println(diPrime_Catalog); 27 } 28 29 public static void MakePrime(int max) { 30 int sqrt, srp, min; 31 boolean prm; 32 min = 2; 33 if (min <= 2 && 2 <= max) { 34 // SetPrime(2); 35 diPrime_Catalog.add(2); 36 } 37 min = min + (min % 2 == 0 ? 1 : 0); 38 int i; 39 for (int n = min; n <= max; n += 2) { 40 sqrt = (int) Math.sqrt(n); 41 prm = true; // false; // 42 i = 0; 43 while (diPrime_Catalog.get(i) <= sqrt) { 44 srp = n % diPrime_Catalog.get(i); 45 if (srp == 0) { 46 prm = false; // true; // 47 break; 48 } 49 i++; 50 } 51 if (prm) { 52 // SetPrime(n); 53 diPrime_Catalog.add(n); 54 } 55 } 56 } 57} 58
このままではコードが読みづらいので、質問を編集し、<code>ボタンを押し、出てくる’’’の枠の中にコードを貼り付けてください
同じ指摘するのは面倒なので下記のコメント参照。
https://teratail.com/questions/350252
それに二度と質問しないというご自身の決意はどこへ?
いずれにしても未解決のまま放置では応えたいと思う人が減るだけです。
コミュニティにはルールがあるので「知らなかった」ではすまされませんし、「初心者だから守らなくていい」という理屈も通りません。
技術的な初心者の質問はウェルカムですが、明記されているルールを守らない自己主張のみ繰り返す無法者は論外ですよ。