[過去ログ]
プログラミングのお題スレ Part21 (1002レス)
プログラミングのお題スレ Part21 http://mevius.5ch.net/test/read.cgi/tech/1668333636/
上
下
前次
1-
新
通常表示
512バイト分割
レス栞
抽出解除
レス栞
このスレッドは過去ログ倉庫に格納されています。
次スレ検索
歴削→次スレ
栞削→次スレ
過去ログメニュー
リロード規制
です。10分ほどで解除するので、
他のブラウザ
へ避難してください。
742: デフォルトの名無しさん [] 2023/06/09(金) 20:08:26.01 ID:7Vf79qrZ >>738 c https://ideone.com/Dbl6mc #include <stdlib.h> #include <math.h> #include <stdio.h> void sieve_of_eratosthenes(int n, int **isprime, int **primes_beg, int **primes_end) { int i, m, j, nbytes = (1 + n) * sizeof **isprime, *map = malloc(nbytes), *beg = malloc(nbytes), *end; for (i = 2; i <= n; i++) map[i] = 1; for (i = 2, m = sqrt(n); i <= m; i++) if (map[i]) for (j = i * i; j <= n; j += i) map[j] = 0; for (i = 2, end = beg; i <= n; i++) if (map[i]) *end++ = i; *isprime = map, *primes_beg = beg, *primes_end = end; } int main() { int n = 1234567, *isprime, *primes_beg, *primes_end; sieve_of_eratosthenes(n, &isprime, &primes_beg, &primes_end); int *a, *b, c, count = 0; for (a = primes_beg; a < primes_end && *a <= n / 3; a++) for (b = a; b < primes_end && *b <= (c = n - *a - *b); b++) if (isprime[c]) count++; printf("count = %d\n", count); return 0; } http://mevius.5ch.net/test/read.cgi/tech/1668333636/742
746: デフォルトの名無しさん [] 2023/06/09(金) 22:55:53.04 ID:oFhRSqmA >>739 >>742 正解。 出題者によるプログラム www.ideone.com/0R9KaI http://mevius.5ch.net/test/read.cgi/tech/1668333636/746
754: デフォルトの名無しさん [sage] 2023/06/10(土) 15:57:09.17 ID:Hla24knV >>738 c ・>>742から若干の省メモリ化 判別用配列の要素をintからcharへ 素数の個数を数えてから一覧用領域を確保 ・組み合わせループの条件を>>746さんを参考に改善 https://ideone.com/CixK7I >>738 c ・上記からさらに省メモリ化 判別用配列はint配列だが判別はビットごと https://ideone.com/JDcFjV http://mevius.5ch.net/test/read.cgi/tech/1668333636/754
メモ帳
(0/65535文字)
上
下
前次
1-
新
書
関
写
板
覧
索
設
栞
歴
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.036s