回答編集履歴
1
コードの修正
test
CHANGED
@@ -6,11 +6,11 @@
|
|
6
6
|
|
7
7
|
![イメージ説明](5fe71218caba3e7367508c2f17bb1006.png)
|
8
8
|
|
9
|
-
|
9
|
+
~~
|
10
10
|
|
11
11
|
また、f(n) = n ^ 2 + an + bが f(n) = (n + i)(n + j)のように因数分解できる形だと素数にならないので2次方程式の解と係数の関係を使ってa,bの取りうる値をさらに絞り込みました。
|
12
12
|
|
13
|
-
(結果的にこれがなくても求められましたが、処理速度は上がると思います...)
|
13
|
+
(結果的にこれがなくても求められましたが、処理速度は上がると思います...)~~
|
14
14
|
|
15
15
|
ごれを踏まえ、以下のようなメソッドを用意しました。
|
16
16
|
|
@@ -18,7 +18,7 @@
|
|
18
18
|
|
19
19
|
- n ^ 2 + an + bを出力するメソッド
|
20
20
|
|
21
|
-
- f(n)が因数分解されるかどうか判定するメソッド
|
21
|
+
~~- f(n)が因数分解されるかどうか判定するメソッド~~
|
22
22
|
|
23
23
|
- 求める長さを求めるメソッド (while文を使って合成数になった瞬間打ち切ればOK!!)
|
24
24
|
|
@@ -26,33 +26,33 @@
|
|
26
26
|
|
27
27
|
```java
|
28
28
|
|
29
|
+
|
30
|
+
|
29
31
|
public class Main {
|
32
|
+
|
33
|
+
|
30
34
|
|
31
35
|
public static void main(String[] args){
|
32
36
|
|
33
|
-
|
37
|
+
|
34
38
|
|
35
39
|
int []max_data = new int[3];
|
36
40
|
|
37
41
|
String []text = {"a","b","length"};
|
38
42
|
|
39
|
-
|
43
|
+
|
40
44
|
|
41
45
|
for(int a = 999; a >= -999; a -= 2){
|
42
46
|
|
43
|
-
for(int b = 999; b >=
|
47
|
+
for(int b = 999; b >= 3; b -= 2){
|
44
48
|
|
45
|
-
if(
|
49
|
+
if(is_length(a,b) > max_data[2]){
|
46
50
|
|
47
|
-
i
|
51
|
+
max_data[2] = is_length(a,b);
|
48
52
|
|
49
|
-
|
53
|
+
max_data[0] = a;
|
50
54
|
|
51
|
-
max_data[0] = a;
|
52
|
-
|
53
|
-
|
55
|
+
max_data[1] = b;
|
54
|
-
|
55
|
-
}
|
56
56
|
|
57
57
|
}
|
58
58
|
|
@@ -70,13 +70,19 @@
|
|
70
70
|
|
71
71
|
System.out.println("積は" + answer);
|
72
72
|
|
73
|
-
|
73
|
+
|
74
74
|
|
75
75
|
}
|
76
76
|
|
77
77
|
public static boolean is_prime(int n)
|
78
78
|
|
79
79
|
{
|
80
|
+
|
81
|
+
if(n <= 1){
|
82
|
+
|
83
|
+
return false;
|
84
|
+
|
85
|
+
}
|
80
86
|
|
81
87
|
for(int i = 2; i <= (int)Math.sqrt(n); i++){
|
82
88
|
|
@@ -100,27 +106,11 @@
|
|
100
106
|
|
101
107
|
}
|
102
108
|
|
103
|
-
|
109
|
+
|
104
|
-
|
105
|
-
{
|
106
|
-
|
107
|
-
for(int i = 1; i <= b; i++){
|
108
|
-
|
109
|
-
if(i + b / i == a){
|
110
|
-
|
111
|
-
return false;
|
112
|
-
|
113
|
-
}
|
114
|
-
|
115
|
-
}
|
116
|
-
|
117
|
-
return true;
|
118
|
-
|
119
|
-
}
|
120
110
|
|
121
111
|
public static int is_length(int a, int b){
|
122
112
|
|
123
|
-
|
113
|
+
|
124
114
|
|
125
115
|
int length = 0;
|
126
116
|
|
@@ -136,6 +126,10 @@
|
|
136
126
|
|
137
127
|
}
|
138
128
|
|
129
|
+
|
130
|
+
|
131
|
+
|
132
|
+
|
139
133
|
}
|
140
134
|
|
141
135
|
|
@@ -144,4 +138,4 @@
|
|
144
138
|
|
145
139
|
<実行結果>
|
146
140
|
|
147
|
-
a = -
|
141
|
+
a = -61 b = 971 length = 71 積は-59231
|