teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

3

誤記訂正

2018/08/23 01:03

投稿

opyon
opyon

スコア1009

answer CHANGED
@@ -103,7 +103,7 @@
103
103
  * @param list :
104
104
  * @return int[]
105
105
  */
106
- public static int[] toArrayIntegerToInt(List<Integer> list) {
106
+ static int[] toArrayIntegerToInt(List<Integer> list) {
107
107
  int ls = list.size();
108
108
  int[] arr = new int[ls];
109
109
  for (int i = 2; i < ls; i++)

2

バグ修正

2018/08/23 01:03

投稿

opyon
opyon

スコア1009

answer CHANGED
@@ -6,6 +6,10 @@
6
6
  ・速度計測を`System.nanoTime();`に変更
7
7
  ・テスト用ログ出力切り替えを`func(1000, false);`引数でonoff出来るように変更
8
8
 
9
+ 追記:
10
+ 出力結果n=素数の個数が1少なかったので修正
11
+ `k++;`インクリメントする位置が後だったのが原因
12
+
9
13
  ```java
10
14
 
11
15
  import java.util.LinkedList;
@@ -26,7 +30,7 @@
26
30
  public static void main(String[] args) {
27
31
  long start = System.nanoTime();
28
32
 
29
- func(1000, false);
33
+ func(1000, true);
30
34
 
31
35
  long end = System.nanoTime();
32
36
  System.out.println((end - start) / 1000000f + "ms");
@@ -42,7 +46,7 @@
42
46
  int n = 0;
43
47
 
44
48
  //テスト用ログ出力
45
- boolean isTest = test;
49
+ boolean isTest = false;
46
50
 
47
51
  //素数リスト生成
48
52
  int[] p = makePrimesArray(num);
@@ -51,24 +55,19 @@
51
55
  for (int j = 0; j < p.length; j++) {//素数のみ
52
56
 
53
57
  int k = 0;
54
- while (true) {
58
+ while (isPrime(k * k + k * i + p[j])) {
59
+
60
+ k++;//修正:0の時もカウントするように先に足す
55
61
 
56
- if (isPrime(k * k + k * i + p[j])) {
62
+ if (n < k) {
63
+ n = k;
64
+ a = i;
65
+ b = p[j];
57
66
 
58
- if (n < k) {
59
- n = k + 1;//修正:0の時もカウント
60
- a = i;
61
- b = p[j];
62
-
63
- //テスト用ログ出力
67
+ //テスト用ログ出力
64
- if (isTest)
68
+ if (isTest)
65
- printAnswer(a, b, n, a * b);
69
+ printAnswer(a, b, n, a * b);
66
-
67
- }
68
- } else {
69
- break;
70
70
  }
71
- k++;
72
71
  }
73
72
  }
74
73
  }
@@ -104,7 +103,7 @@
104
103
  * @param list :
105
104
  * @return int[]
106
105
  */
107
- static int[] toArrayIntegerToInt(List<Integer> list) {
106
+ public static int[] toArrayIntegerToInt(List<Integer> list) {
108
107
  int ls = list.size();
109
108
  int[] arr = new int[ls];
110
109
  for (int i = 2; i < ls; i++)
@@ -138,8 +137,14 @@
138
137
  return true;
139
138
  }
140
139
  }
140
+
141
141
  ```
142
142
  出力結果
143
143
  a:-61 b:971 n:70
144
144
  -59231
145
- 15.597411ms
145
+ 15.597411ms
146
+
147
+ 出力結果修正後
148
+ a:-61 b:971 n:71
149
+ -59231
150
+ 15.954789ms

1

誤記訂正

2018/08/23 00:57

投稿

opyon
opyon

スコア1009

answer CHANGED
@@ -104,7 +104,7 @@
104
104
  * @param list :
105
105
  * @return int[]
106
106
  */
107
- public static int[] toArrayIntegerToInt(List<Integer> list) {
107
+ static int[] toArrayIntegerToInt(List<Integer> list) {
108
108
  int ls = list.size();
109
109
  int[] arr = new int[ls];
110
110
  for (int i = 2; i < ls; i++)