11/05/10 03:31:16.06
maketableはふつー
int maketable(int N)
{
int i, j, cnt = 0;
primeS[cnt++] = 2;
for(i = 3; i < N; i += 2) {
for(j = 0; i % (temp = primeS[j]); j++) {
if(temp * temp > i) {
primeS[cnt++] = i;
break;
}}
return cnt;
}
ってやって、奇数だけをチェックする
3を最初に入れる意味が全くない
771:デフォルトの名無しさん
11/05/10 03:33:59.89
10000 + 1 と10000 + 0.01 を比べても意味のある差が出るわけないのになw
772:デフォルトの名無しさん
11/05/10 03:34:36.47
>>769
一応、足しこんだ結果が最大素数を超えればそこで打ち切っており、>>756 の枝刈りも採用しています。
他になにか別の枝狩りはありましたでしょうか?
773:デフォルトの名無しさん
11/05/10 03:36:40.20
>>771
それはそのとおりです。エラトステネスの威力の前に他の小技はかすんでしまいました。
しかし、>>756 は割りあいに有効でした。
774:デフォルトの名無しさん
11/05/10 03:38:46.27
加算の回数、foundp()を呼び出した回数、ループ終了時のiの値等
ちょっと調べてみればどんだけ無駄に計算してるかわかるだろ
775:デフォルトの名無しさん
11/05/10 03:40:42.06
>>770
偶数くらいは弾いてあげるべきでしたね。しょぼん
776:デフォルトの名無しさん
11/05/10 03:59:17.92
>>772
結局>>592以降のやりとりを全く理解してないってことかよw
777:デフォルトの名無しさん
11/05/10 04:04:16.07
>>774
確認しました。なるほど、これは大差がつきました。
起点から正方向に走査: foundp() 284
URLリンク(codepad.org)
起点から負方向に走査: foundp() 1112 (>>549 >>752)
URLリンク(codepad.org)
(足し算の回数はほとんど変わりませんでした)
k の最大値を早期に確定させて、>>756 の枝刈りを最大限に活用するのがいいみたいですね。
778:デフォルトの名無しさん
11/05/10 04:09:35.39
>>764だとでsieve[]で素数がどうか確認するのは27回だけどな
779:デフォルトの名無しさん
11/05/10 04:21:57.95
>>776
そうそう、それもいれなくちゃいけませんでしたね。
起点から正方向に走査:加算:119730, foundp:284
URLリンク(codepad.org)
起点から負方向に走査:加算:728939, foundp:1112 (>>549 >>752)
URLリンク(codepad.org)
しかもこれは、for(i = 0; ... ) での枝刈りがうまく適用できない。
大差ですね。いろいろとコメントいただきありがとうございました。
780:デフォルトの名無しさん
11/05/10 04:30:59.92
自分の頭が本当に悪いことを理解して、2度とム板に書き込むなよ
781:デフォルトの名無しさん
11/05/10 04:32:26.93
>>778
確認しました。>>764 のやりかたは、まだ表っ面しか理解できていないので、
この回数の少なさの理由はまだよくわかっていません。
URLリンク(codepad.org)
782:デフォルトの名無しさん
11/05/10 04:34:39.05
>>780
いやん。
783:デフォルトの名無しさん
11/05/10 04:39:15.43
>>672や>>764が理解できないってのは、小学生レベルの算数がまともに理解できないっていうのと同じ
784:デフォルトの名無しさん
11/05/10 10:15:11.79
糞スレ
785:デフォルトの名無しさん
11/05/10 12:17:27.29
◆QZaw55cn4cが書けば書くほどおのれの頭の悪さのボロがどんどん出てくる面白いスレ
786:デフォルトの名無しさん
11/05/10 12:50:27.37
◆QZaw55cn4cのフリ見て我がフリ直せのスレですね
反面教師としてぴったりです
787:761
11/05/10 13:15:06.31
データのほうにミスがあった件を修正中です。
データ件数も32ビット整数の正上限に近い21億にまで
対応しています。
ただし現在PCネットのほう授業で使用中なので、効率が
あがりません。バックグラウンドで一台あたり2000万回
実行させるのは相当のテクニックが必要です。
マシンの1秒間のCPU使用率が自分の作業を除いて
2%以下のタイミングで実行するようにしており
なかなか効率があがりません。
ネットワークレジストリを利用してコマンドをやりとり
しています。正午に作業を開始して現在進捗率10%です。
788:761
11/05/10 17:36:38.17
マシンメンテのタイミングになってしまいました。
この時間はIPCは禁止になります。
生憎レジューム機能がうまく機能しておらず
データの信頼性が疑わしいので、今日・明日の
うpは無理です。進捗率50%まで到達したのに
残念です。
789:デフォルトの名無しさん
11/05/11 05:24:43.57
糞
790:デフォルトの名無しさん
11/05/12 00:09:23.42
糞