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

質問編集履歴

4

改善案の実装

2018/08/22 17:09

投稿

opyon
opyon

スコア1009

title CHANGED
File without changes
body CHANGED
@@ -42,8 +42,8 @@
42
42
 
43
43
  boolean isTest = true;
44
44
 
45
- for (int i = s; i < e; i++) {
45
+ for (int i = s; i < e; i+=2) {//奇数のみ
46
- for (int j = 1; j <= e; j++) {
46
+ for (int j = 1; j <= e; j+=2) {//奇数のみ
47
47
  int k = 0;
48
48
  while (true) {
49
49
  if (isPrime(k * k + k * i + j)) {
@@ -115,4 +115,13 @@
115
115
  ```java
116
116
  //n = k;修正前
117
117
  n = k + 1;//修正後:0の時もカウント
118
- ```
118
+ ```
119
+ ---
120
+ 追記4:a,bの探索範囲は奇数のみで良いので修正
121
+ ```java
122
+ for (int i = s; i < e; i+=2) {//奇数のみ
123
+ for (int j = 1; j <= e; j+=2) {//奇数のみ
124
+ ```
125
+ a:-61 b:971 n:70
126
+ -59231
127
+ 37ms

3

バグの修正

2018/08/22 17:09

投稿

opyon
opyon

スコア1009

title CHANGED
File without changes
body CHANGED
@@ -48,7 +48,7 @@
48
48
  while (true) {
49
49
  if (isPrime(k * k + k * i + j)) {
50
50
  if (n < k) {
51
- n = k;
51
+ n = k + 1;//修正:0の時もカウント
52
52
  a = i;
53
53
  b = j;
54
54
  ans = i * j;
@@ -108,4 +108,11 @@
108
108
  for (int i = 2; i <= Math.sqrt(x) ; i++) {
109
109
  a:-61 b:971 n:70
110
110
  -59231
111
- 58ms
111
+ 58ms
112
+
113
+ ---
114
+ 追記3:n=0の時もカウントしてるので出力で+1するように修正
115
+ ```java
116
+ //n = k;修正前
117
+ n = k + 1;//修正後:0の時もカウント
118
+ ```

2

改善案を実装

2018/08/22 16:40

投稿

opyon
opyon

スコア1009

title CHANGED
File without changes
body CHANGED
@@ -80,8 +80,9 @@
80
80
  }
81
81
  //追記終わり。
82
82
 
83
-
83
+ //判定範囲は√xまでで良いので修正
84
- for (int i = 2; i <= x / 2; i++) {
84
+ //for (int i = 2; i <= x / 2; i++) {
85
+ for (int i = 2; i <= Math.sqrt(x) ; i++) {
85
86
  if (x % i == 0) {
86
87
  return false;
87
88
  }
@@ -100,4 +101,11 @@
100
101
  追記:正解出ました。
101
102
  a:-61 b:971 n:70
102
103
  -59231
103
- 286ms
104
+ 286ms
105
+
106
+ ---
107
+ 追記2:素数判定範囲は√までで良いので修正
108
+ for (int i = 2; i <= Math.sqrt(x) ; i++) {
109
+ a:-61 b:971 n:70
110
+ -59231
111
+ 58ms

1

自己解決とバグ修正

2018/08/22 16:13

投稿

opyon
opyon

スコア1009

title CHANGED
File without changes
body CHANGED
@@ -71,6 +71,16 @@
71
71
  }
72
72
 
73
73
  static boolean isPrime(int x) {
74
+
75
+ //追記:自己解決
76
+ //引数xが1以下でも処理していたのが原因でした。
77
+ //下記条件を追加するだけで正解が出ました。
78
+ if (x <= 1) {
79
+ return false;
80
+ }
81
+ //追記終わり。
82
+
83
+
74
84
  for (int i = 2; i <= x / 2; i++) {
75
85
  if (x % i == 0) {
76
86
  return false;
@@ -84,4 +94,10 @@
84
94
  出力結果
85
95
  a:-999 b:61 n:1010
86
96
  -60939
87
- 546ms
97
+ 546ms
98
+
99
+ ---
100
+ 追記:正解出ました。
101
+ a:-61 b:971 n:70
102
+ -59231
103
+ 286ms