回答編集履歴
1
エラストネスの篩を使った実装例を追記
test
CHANGED
@@ -29,3 +29,41 @@
|
|
29
29
|
|
30
30
|
|
31
31
|
というループにして、`i`が素数か調べて、素数なら表示して処理を終了すればいいのでは?
|
32
|
+
|
33
|
+
|
34
|
+
|
35
|
+
追記: エラストネスの篩を使った実装例を示しておきます。
|
36
|
+
|
37
|
+
|
38
|
+
|
39
|
+
```c
|
40
|
+
|
41
|
+
#include <stdio.h>
|
42
|
+
|
43
|
+
|
44
|
+
|
45
|
+
int main(void) {
|
46
|
+
|
47
|
+
int n;
|
48
|
+
|
49
|
+
scanf("%d", &n);
|
50
|
+
|
51
|
+
printf("入力値:%d\n", n);
|
52
|
+
|
53
|
+
|
54
|
+
|
55
|
+
int primes[n + 1];
|
56
|
+
|
57
|
+
for (int i = 0; i <= n; i++) primes[i] = (i > 3 && i % 2 == 0) ? 0 : i;
|
58
|
+
|
59
|
+
for (int i = 2; i*i <= n; i++) if (primes[i] != 0) for (int x = i + i; x <= n; x += i) primes[x] = 0;
|
60
|
+
|
61
|
+
while (n > 0 && primes[n] == 0) n--;
|
62
|
+
|
63
|
+
printf("%d", n);
|
64
|
+
|
65
|
+
return 0;
|
66
|
+
|
67
|
+
}
|
68
|
+
|
69
|
+
```
|