回答編集履歴
1
エラストネスの篩を使った実装例を追記
answer
CHANGED
@@ -13,4 +13,23 @@
|
|
13
13
|
for(i=n;i>1;i--){
|
14
14
|
```
|
15
15
|
|
16
|
-
というループにして、`i`が素数か調べて、素数なら表示して処理を終了すればいいのでは?
|
16
|
+
というループにして、`i`が素数か調べて、素数なら表示して処理を終了すればいいのでは?
|
17
|
+
|
18
|
+
追記: エラストネスの篩を使った実装例を示しておきます。
|
19
|
+
|
20
|
+
```c
|
21
|
+
#include <stdio.h>
|
22
|
+
|
23
|
+
int main(void) {
|
24
|
+
int n;
|
25
|
+
scanf("%d", &n);
|
26
|
+
printf("入力値:%d\n", n);
|
27
|
+
|
28
|
+
int primes[n + 1];
|
29
|
+
for (int i = 0; i <= n; i++) primes[i] = (i > 3 && i % 2 == 0) ? 0 : i;
|
30
|
+
for (int i = 2; i*i <= n; i++) if (primes[i] != 0) for (int x = i + i; x <= n; x += i) primes[x] = 0;
|
31
|
+
while (n > 0 && primes[n] == 0) n--;
|
32
|
+
printf("%d", n);
|
33
|
+
return 0;
|
34
|
+
}
|
35
|
+
```
|