【モリタポ有償】C/C++の問題を片付けます(2)at TECH
【モリタポ有償】C/C++の問題を片付けます(2) - 暇つぶし2ch534: ◆QZaw55cn4c
11/04/25 21:03:10.67
>>516
URLリンク(codepad.org)
スレリンク(tech板:439番) の指摘を受けて細かいところを変更しました。
>素数の調べ方がクソ
エラトステネスのふるいは必要なメモリ容量が半端でないので、「クソ」かもしれませんが、素朴な方法にしました。10万までなら、(私の環境では)十分な速度が出ています。
しかし、割り算を二回実行してしまうのはなんとかしたいと思いつつも改良できないでいます。
>ループにも無駄が多すぎ
ちょっとだけましになったと思います。

535:デフォルトの名無しさん
11/04/25 21:04:12.33
>>533
>たぶん、我々が思う以上に彼は背伸びしてたのかもしれないね。

そんな事はかなり前から分かっていたよ
でもどんなに指摘しても屁理屈で返して来るからとうとう切れたね

536: ◆QZaw55cn4c
11/04/25 21:05:10.42
>>528
今から取りかかります。しばしお待ちを。

537:デフォルトの名無しさん
11/04/25 21:12:51.34
しかしC言語で書くと二分木扱うだけでプログラムの半分以上さいちゃうのか
言語指定がCだから仕方が無いけど、車輪の再発明って大変ですね

538:デフォルトの名無しさん
11/04/25 21:48:28.19
2chで金儲けっていいの?

539:デフォルトの名無しさん
11/04/25 22:16:04.06
>>534
篩よりよっぽど多量のメモリを使っておきながら、なに寝言ほざいちゃってんの?

540: ◆QZaw55cn4c
11/04/25 22:33:46.27
>>518
URLリンク(codepad.org)
ごくありきたりな内容になりました。工夫したのは二分探索と計算打ち切りのタイミングでしょうか。
PenIII 866 で 3秒くらいです。

codepad の方がはやいとは。

541: ◆QZaw55cn4c
11/04/25 22:45:16.42
>>539
ビット演算はできれば避けたいのが本音です。

542:デフォルトの名無しさん
11/04/25 22:49:38.52
ビット関係なくムダに使ってるけどw

543: ◆QZaw55cn4c
11/04/25 22:55:02.33
>>542
ん?なにが無駄ですか?

544:デフォルトの名無しさん
11/04/25 22:59:54.91
>#define N 100000
>#define TABSIZE 10000
>static int primeS[N];

こんなムダに気づかない人間がよく平気な顔して生きてられるな

545:デフォルトの名無しさん
11/04/25 23:05:58.68
>>544
微々たるものだし、質問者本人も
なるべく速いコードでお願いします。
という希望だから
その絡みはさすがに無理があると思う

546:デフォルトの名無しさん
11/04/25 23:13:27.95
◆QZaw55cn4cを外して他人のフリするのやめろよw

547:デフォルトの名無しさん
11/04/25 23:15:19.79
マジキチか

548:デフォルトの名無しさん
11/04/25 23:15:54.81
>>545
何を指摘しているか理解できたら、微々たる物なんて言えないけど

549: ◆QZaw55cn4c
11/04/25 23:17:37.82
>>544
ご指摘感謝いたします。たしかに無駄、あるいはバグでした。
>>516
URLリンク(codepad.org)
>>518
URLリンク(codepad.org)
>>545
どうもです。

550:デフォルトの名無しさん
11/04/25 23:30:18.69
>>548
何を指してるの?
メモリ使用量、速度ともに認識不能レベルだと思うけどねぇ

551:デフォルトの名無しさん
11/04/25 23:34:25.52
10倍のメモリ使用量が認識できない人がいたw

552:デフォルトの名無しさん
11/04/25 23:38:16.91
だから擁護は◆QZaw55cn4cだと何度言えば

553:デフォルトの名無しさん
11/04/25 23:41:27.01
こんな稚拙なコードで金取ろうなんて厚かましいにもほどがある。

554:デフォルトの名無しさん
11/04/25 23:47:29.80
>>551
KB単位のメモリ使用量とか
マイクロ秒単位の速度向上なんて
認識出来んわ

555:デフォルトの名無しさん
11/04/25 23:50:46.13
学生さんなのかな

556:デフォルトの名無しさん
11/04/25 23:52:59.86
>>555
中年ニートだと
人生オワットルわ

557:デフォルトの名無しさん
11/04/25 23:58:35.80
実測してもクソ遅いし、見ただけでもムダが多いコードに何言ってんだw

558:デフォルトの名無しさん
11/04/26 13:47:07.22
立方数が最大のものだけ出力すればいいのに

559: ◆QZaw55cn4c
11/04/26 19:17:43.86
>>557
ご指摘ありがとうございます。たしかにまだまだ改良の余地はありました。とりあえず、>>518 の foundp() を取り入れました。
Knuth だったか、最初の思いつきはベストの思いつきではない、というわけでした。
>>516
URLリンク(codepad.org)

でも、ここまで来て、私以外にコードを晒す人はいないようですね。

560:デフォルトの名無しさん
11/04/26 19:22:04.71
>>559
>でも、ここまで来て、私以外にコードを晒す人はいないようですね。

それが何か?嫌だったら無理に晒さなくてもいいんだよw

561:デフォルトの名無しさん
11/04/26 19:36:49.63
>>559
お前みたいなカスに参考にされるのがイヤだから

562: ◆QZaw55cn4c
11/04/26 19:43:32.80
>>560
GPL/コピーレフトの思想から考えても、ソースコードを晒すことからすべてが始まると思いますけれどもね。
コードを晒すことなしにどうこういわれても、それは砂上の空論でしょうね。
>>561
多分、参考にもならないから、ご懸念なさっている心配はないと思いますよ :-)

563:デフォルトの名無しさん
11/04/26 19:51:09.06
◆QZaw55cn4cがいるために、他の方が勉強の機会を奪われてしまうのは残念ですね。

564:デフォルトの名無しさん
11/04/26 19:51:12.60
>>559のアホなところもまだまだ指摘できるし、>>518に関しても10倍以上速いコード書けるけどなw

565:デフォルトの名無しさん
11/04/26 19:57:16.75
>>564
実力を見せ付けてやれ

566:デフォルトの名無しさん
11/04/26 20:26:11.22
>>562
俺がソースコードを書くとは一言も言ってないんだけど?
書いてもないソースコードをどうやって晒せと?

>>563
本当に迷惑だよなコイツは

567:デフォルトの名無しさん
11/04/26 20:41:35.86
本気のコードwじゃなくて適当におざなりに書いた中級者レベルのコード
を売って高い給料貰うというのはプログラマとして生きていく為の基本的
能力でその点は合格じゃね~の?
ただ500モリタポじゃ破格杉で同業者からバッシングされてるって感じだな

568:デフォルトの名無しさん
11/04/26 21:03:39.83
>>567
だな
せいぜい5モリタポがいい所

569:デフォルトの名無しさん
11/04/26 21:13:20.80
>>567
全力の本気であのレベルだろw

570:デフォルトの名無しさん
11/04/26 21:26:41.72
◆QZaw55cn4cさぁ
メ欄に書いたからって免罪符にはならないんだよねぇ

571:デフォルトの名無しさん
11/04/26 21:28:12.12
GPL/コピーレフトってそんなに理想なの?w

572:デフォルトの名無しさん
11/04/26 21:30:04.02
砂上の空論ってなに?笑うところ?
これが◆QZaw55cn4cのセンス?

573:デフォルトの名無しさん
11/04/26 21:41:50.08
>>569
多分な
自己評価が異常に高い癖に能力が伴っていない典型的な自己愛ニート
もうどこにも就職出来ないと思った方が良い

574:デフォルトの名無しさん
11/04/26 21:49:41.57
同業者の凄まじいライバル心なのかどうかは知らないが酷いバッシングw

575:デフォルトの名無しさん
11/04/26 21:50:35.60


576:デフォルトの名無しさん
11/04/26 21:52:28.56
どうでもいいけど◆QZaw55cn4cは他スレ荒らすのやめとけよ

577:デフォルトの名無しさん
11/04/26 21:54:27.94
>>574
同業者ってww

職業PGと無職のオッサンを同列で論じないでくれよな頼むからw

578:デフォルトの名無しさん
11/04/26 22:04:52.85
>>577
同列に論じられても仕方がないだろw

579:デフォルトの名無しさん
11/04/26 22:53:29.65
>>578
職業PG=底辺職業のドカタだもんな

580:デフォルトの名無しさん
11/04/26 23:11:08.02
>>579
無職のクズより100倍マシ

581: ◆QZaw55cn4c
11/04/27 02:30:39.84
>>572
砂上の楼閣でしたかね。

>>564
codepad 上で実行してみてその通りであれば、このスレを店じまいしましょう。私は一介の名無しにもどります。

582:581 ◆QZaw55cn4c
11/04/27 03:11:01.38
そうですね。
>>564 の「あほなところの指摘」うんぬんについては主観も混じることでしょうし、明確な線引きはできないでしょうから、これは今回の引退条件からは除きましょうか。
(たとえば配列ですべてを処理して速度を上げるだけのコードを持ち出してきてくるのであれば、私サイドでは異議も申し立てるでしょうね。)

>>518 の「10倍以上の速度」については、codepad で一応の結果が出ますから、そこで判断しましょう。

>>518 の私の実装 >>549 について、codepad 上で反復させた結果は次のとおりです。
URLリンク(codepad.org)
私のコードでは 14回実行できます。

codepad で 100 回以上実行できるソースコードがあれば、このスレを閉じ、私は一介の名無しに戻ります。

583:デフォルトの名無しさん
11/04/27 03:32:33.41
名無しに戻るじゃなくて、2度とこのスレ以外に書き込まないじゃないとダメだろw

584:581 ◆QZaw55cn4c
11/04/27 03:41:46.56
>>583
そのような外部から判定不能な宣言では、かえって私の本気の度合いが薄れますからね。
アマチュアに実力の差を見せつける、そしてこのスレをやめさせるいい機会です。お待ちしております。

585:デフォルトの名無しさん
11/04/27 03:45:00.22
名無しに戻って他のスレに出てこられたら、他の板住民に迷惑すぎるだろw

586:デフォルトの名無しさん
11/04/27 03:50:58.44
>>582
10倍以上ならcodepad で 140 回以上実行になるが
こんな計算すらできないのか。100と140はかなり違う

587:581 ◆QZaw55cn4c
11/04/27 03:55:13.39
>>586
codepad のリソース割り振り云々の異議を抑えるため、私に不利な条件で、キリ番にしたまでのこと。

588:デフォルトの名無しさん
11/04/27 04:00:14.60
単に区切りがいいからでしょ

589:デフォルトの名無しさん
11/04/27 04:05:38.22
>>523>>527が何を書いてるか理解できてないんだろうなw

590:581 ◆QZaw55cn4c
11/04/27 04:29:27.46
>>589
単にマシンスペックで稼いでいるだけでしょう。確かに PenIII866/512MB の世界では望むべくもない値ではありますが。

591:デフォルトの名無しさん
11/04/27 04:49:50.93
codepadだとあんまり差がでないなぁ
URLリンク(codepad.org)

592:581 ◆QZaw55cn4c
11/04/27 05:53:22.39
>>591
>for(i = 2, max_len = 0; i * max_len < N; i++) {
を説明していただけませんでしょうか。
ベルトランの仮説(チェビシェフにより証明)を利用していると思われるんですが、
i から 2i の間に素数があっても、2i から 3i の間に素数があるかどうかはわかりません。

もっともここを
for (i = 2, i < N; i++)
にしてみたところで、
URLリンク(codepad.org)
爆速なんですけれども。(それか、codepad を速度判定に用いるのは精度がよくないですね。)

それにしてもエラトステネスのふるいの威力は見損じていました。sierve[i] で素数判定できるのには太刀打ちできません。

削除申請を出しました。
スレリンク(saku板:337番)

593:デフォルトの名無しさん
11/04/27 06:22:47.29
エラトステネスの篩が速いことは宿題スレにいたら既知だと思う。
それよりも、一般的なアルゴリズムから一工夫いれている所に感心したなぁ。
あと、for(i = 3; i * i < N; i += 2)
はfor(i = 3; i <= 1000 ; i += 2)の方が、と思ったけど、速度大して変わらないから最適化されたんだろうか。

594:デフォルトの名無しさん
11/04/27 06:23:38.63
あっと、メモリ使用量が~の件だけど、いまどきヒープに1メガの連続領域取ることが苦であるような環境のことは気にしなくていいと思わないか?

595:デフォルトの名無しさん
11/04/27 06:40:30.24
このスレ以外の宿題スレとかにも2度と書き込まないでほしい

596:593
11/04/27 06:45:04.91
にしてもなんか >>591本人と同じように速度に違和感があったので、ヒープやめた
URLリンク(codepad.org)
納得いく速度になったかも

597:デフォルトの名無しさん
11/04/27 06:49:31.25
グローバルにする意味がなかったので改訂。
URLリンク(codepad.org)

598:デフォルトの名無しさん
11/04/27 06:58:02.57
>>592
その行にはほとんど意味がない

599:デフォルトの名無しさん
11/04/27 06:58:43.29
>>592
横フォローだけど。
連続する素数の最初の数字が、今のところの最大の個数繰り返したとしても、最大数を超えるってことは吟味する意味がないってことかと。
そういう数学の証明とか仮説とかは苦手だけど、詳しいならもっと減らせるんでない?
最初の数字より大きいものしか続かないわけだから、i * max_len < N よりも少なくていいはず。

600:デフォルトの名無しさん
11/04/27 07:02:25.88
「私は特定の企業のサーバーに勝手にスレッドを作って占有状態
にして事業をしようとしていました。しかしそれを笑われたので
腹が立ったので、やめようと思います。2ch運営は無償労働で
このスレを閉じなさい」

こういう勝手極まりない要求が通ると思っているから一層笑える
運営は実費請求してもいいんじゃねw

601:デフォルトの名無しさん
11/04/27 07:05:33.25
これ以降、ざまぁみたいなレスが続くんだろうなぁ。
それはそれでうざいんだけど。

602:デフォルトの名無しさん
11/04/27 07:06:32.44
>>599
それに該当するのが
>for(j = i, k = sum = 0; k < max_len; j++) if(sieve[j]) sum += j, k++;
>if(sum >= N) break;
この部分

603:デフォルトの名無しさん
11/04/27 07:20:23.81
それは別。

604:デフォルトの名無しさん
11/04/27 07:24:16.52
いやいや、そこでループ抜けるから、for()内の条件分岐が意味ないってことなのに

605:デフォルトの名無しさん
11/04/27 07:25:05.29
抜けないよ。gotoでprintfの前に飛ぶとかならまだしも。

606:デフォルトの名無しさん
11/04/27 07:27:03.37
ってあああああほんとごめん。みてるbreakの場所が違った。ほんとごめん。寝た方がいいっすね俺。

607: ◆QZaw55cn4c
11/04/27 07:39:11.23
>>598
意味がない、という問題ではなく、必要なすべての場合を踏んでいるかどうか、はこの手の問題の必要条件でしょう。
これによって i を探索する幅がせまくなっているのは事実。

もっとも、これをはずしても >>582 より桁違いに速いのは >>592 で検証済みです。

608: ◆QZaw55cn4c
11/04/27 07:40:19.19
>>595
トリップは使いませんが書き込みはします。そのときはよろしくお願いいたします。

609:591
11/04/27 07:42:11.80
すごい迷惑だから、このスレから出ないでほしい

610:デフォルトの名無しさん
11/04/27 07:44:06.69
>>607
だから>>602の部分で条件満たすから、i * max_len < N は意味がないの
書かれたコード理解する能力ないんだから、書き込むな

611:デフォルトの名無しさん
11/04/27 07:46:11.16
なんで俺が恥をさらした部分に食いつくのか。。。
それよりさらに速くなったことについて感想を。。。

612:デフォルトの名無しさん
11/04/27 07:50:50.99
- for(i = 2, max_len = 0; i * max_len < N; i++) {
+ for(i = 2, max_len = 0; ; i++) {
これでおk。
もっとも(って好きだよね)これによって削減される演算は微々たる物ですが

613:デフォルトの名無しさん
11/04/27 07:52:56.22
必要なすべての場合を踏むのは常に前提で、
意味がない処理を省くことこそがこの手の問題の必要条件じゃね?

614: ◆QZaw55cn4c
11/04/27 07:54:07.83
>>599
最初の素数 p があったとして、その次が 2p までにあることはベルトランの仮説により証明されているようです。まあ実際は、素数はもっと詰まっていますが。
p と len_max の二つの情報にベルトランの仮説を用いて探索範囲を狭めるのならば、p * (2^(len_max - 1) < i でしょうね。(^ はここではべき乗)
素数の間隔に関する単純な定理が他にあるかどうかは、調べてみましたがよくわかりませんでした。素数分布に関するものならいくつかありますが。

615: ◆QZaw55cn4c
11/04/27 07:55:07.93
>>602
なるほど。

616:デフォルトの名無しさん
11/04/27 07:56:44.68
そんな難しげな理論なんて関係なく、小学生レベルの算数の話

617: ◆QZaw55cn4c
11/04/27 08:08:33.63
>>610
i の探索範囲が狭まると、狭まった分だけループの回数が減りますが、本当に減らしてもいいのでしょうか、という問題です。
たしかに実質 >>602 で len_max 個分の隣り合う素数を足しこんで N 以上であれば打ち切っていますが、これは実際にスキャンして調べているわけでその分計算量を要しています。
でも、だからといって、i * len_max が N を超えたら実際に調べなくともいい、とは限らないと考えています。

>>592 で影響の度合いの確認はとっています。

618: ◆QZaw55cn4c
11/04/27 08:13:28.09
>>599
>最初の数字より大きいものしか続かないわけだから、i * max_len < N よりも少なくていいはず。

なるほど。やっと理解しました。
これでお開きとします。いろいろと説明ありがとうございました。

619:デフォルトの名無しさん
11/04/27 08:22:45.00
勝手に仕切ってるしw

620:デフォルトの名無しさん
11/04/27 08:24:03.34
N=100000000のとき長さ4685 (7から45161までのすべての素数の和)であってる?

621:デフォルトの名無しさん
11/04/27 08:31:48.78
ある素数からn個の連続が見つかったとき、それ以降のある素数からn個の連続で範囲を超えたら以後は調べる必要がない
足し算が理解できれば当たり前すぎる条件だよね

622:デフォルトの名無しさん
11/04/27 08:43:03.54
どうでもいいけど仮説ってことは証明されてないってことだよなぁ

623:デフォルトの名無しさん
11/04/27 10:33:28.33
>>596-597
10倍どころじゃなくて吹いたw

624:デフォルトの名無しさん
11/04/27 11:38:30.09
じゃんけんは後手必勝w

625:デフォルトの名無しさん
11/04/27 13:16:24.49
砂上の空論wwwwwwwwwwww

626:デフォルトの名無しさん
11/04/27 13:18:51.06
机上の楼閣の餅外じゃねw?

627:デフォルトの名無しさん
11/04/27 13:23:35.06
2chで金儲けっていいの?

628:デフォルトの名無しさん
11/04/27 13:29:23.30
噂には聞いていたが自己愛性人格障害ってやっぱり直らないんですね
唯一◆QZaw55cn4cが自分で白旗を揚げた点だけは評価してやろう

でも事実は>>600の通りなんだよね
こいつのアホさ加減は死ぬまで続くだろう

629:デフォルトの名無しさん
11/04/27 13:53:32.45
>>621
何でそこの話をそのタイミングでしているのか理解に苦しむ。

630:デフォルトの名無しさん
11/04/27 19:21:23.94
ベルトラン・チェビシェフ氏曰く「こんなどこの馬の骨ともわからん問題にいちいち私の名前を出さんどいてくれや、あほんだらが」

631:デフォルトの名無しさん
11/04/27 19:35:59.80
へぇそうなんだすごいねー

632:デフォルトの名無しさん
11/04/27 20:02:16.52
>>630
ベルトラン・チェビシェフ氏ってwww

633:デフォルトの名無しさん
11/04/27 20:21:50.05
ベルトラン・チェビシェフ両氏

634:デフォルトの名無しさん
11/04/27 22:29:55.55
◆QZaw55cn4cが話題を逸らし始めたか

635:デフォルトの名無しさん
11/04/27 22:31:13.25
まぁ、恥ずかしいんだろうなw
必死でレスつけてスレを落とそうとするくらいしか、手が残されてない。

636:デフォルトの名無しさん
11/04/27 22:33:46.91
恥を知る心があればこんなスレは立てないし、ここまで嫌われてはいない

637:デフォルトの名無しさん
11/04/27 22:53:59.62
◆QZaw55cn4cは人間のクズ
いやヒトモドキ

638:デフォルトの名無しさん
11/04/27 23:02:11.79
まったくもってその通りだな

639:デフォルトの名無しさん
11/04/27 23:15:13.96
朝鮮人臭いよな
在日とか?キムチ大好きで風呂は2週間に一回とかなw

640:デフォルトの名無しさん
11/04/28 01:01:42.85
◆QZaw55cn4cさんは名無しになって宿題解きますスレに出てるのかな?

641:デフォルトの名無しさん
11/04/28 01:02:29.99
>>597
篩を差し替えて、さらに2倍ちょい
URLリンク(codepad.org)

642:デフォルトの名無しさん
11/04/28 01:24:32.52
>>641
これはマジ速いな
こういうのを作れないといかんなやっぱり

643:デフォルトの名無しさん
11/04/28 02:43:47.30
速過ぎワロタ
突き詰めていくとやはり数学の教養が物を言うか・・・

644:デフォルトの名無しさん
11/04/28 02:50:59.33
>>641
おお、おつです。
何気に気になったまま放置してる点があるんだけど、対象環境がGCC4.5なんで、
ループの自動並列化を行えるはずなんだよね。
そこも踏まえて検証したかったんだけど、codepad前提になってしまっていたのでそっとしておいた。
でも、アルゴリズムが複数出てきた今なら検証する価値が出てきたのかも

>>643
数学の教養ってわけでもないと、、、思う。

645:デフォルトの名無しさん
11/04/28 02:56:52.46
足し算の結果を保存して、計算回数減らしたら、codepad上だと遅くなったw

646:デフォルトの名無しさん
11/04/28 09:35:33.98
>>641
アンタ何モンだよw マジで恐れ入ったわ。

647:デフォルトの名無しさん
11/04/28 13:55:32.05
◆QZaw55cn4cって糞だよなぁ

648:デフォルトの名無しさん
11/04/28 16:26:36.70
最初の素数を探す部分が実行時間のほとんどを占めるから見逃されてるけど、
◆QZaw55cn4cの本当にダメなところはそれ以降

649:デフォルトの名無しさん
11/04/28 17:45:06.76
いや、◆QZaw55cn4cは速度より可読性を優先してるな
だから効率を優先化したコードより読みやすくまた効率がいい
そこを理解できてない奴が多いな

650:デフォルトの名無しさん
11/04/28 17:50:31.93
>>649
>>582

651:デフォルトの名無しさん
11/04/28 17:53:17.40
◆QZaw55cn4cは理解力・思考力が底辺レベルなのにプライドばっかりムダに高い

既知の問題に既知の答えをコピペするぐらいならできるけど、
ちょっとアレンジしてある問題だと内容をまず誤読して、
それから頭の悪いゴミコードを書く

652:デフォルトの名無しさん
11/04/28 18:09:19.22
>>649==◆QZaw55cn4c

>>651
しかも必要の無いところにわざわざ二分木のデータ構造を持ち込んだり
いかにも「俺は人とは違うんだぞ」と言いたげだよな
その割には全然内容が伴ってないけどなw

653:デフォルトの名無しさん
11/04/28 19:15:45.11
◆QZaw55cn4cは糞なのか

654:デフォルトの名無しさん
11/04/28 19:20:37.95
あげておこう

655:デフォルトの名無しさん
11/04/28 19:30:26.82
おまいら、あんまり追い討ちかけてやんなw
2ちゃん妖怪、自演粘着オバケに化けて出られても困るぞ。

656:デフォルトの名無しさん
11/04/28 20:05:29.36
面白いねー

657:デフォルトの名無しさん
11/04/28 20:39:47.60
>>655
いや俺らが追い打ちを掛けなくてもこいつは元々超粘着気質なので
いずれ荒らしになるか他のスレで人のアラ探しばかりするか、どちらに
しろ無職で時間だけはたっぷりあるだろうからロクな事はしないだろ

658:デフォルトの名無しさん
11/04/28 20:52:12.60
人の課題を勝手に解いてこのスレに誘導し続けるんじゃね
解いてっていうか解けてないけど

659:デフォルトの名無しさん
11/04/28 21:16:52.78
>>658
でもこいつ削除依頼出したぜ?やっぱり頭がおかしいよなww

660:デフォルトの名無しさん
11/04/28 21:24:38.89
てかトリップ外して逃亡は危険サイン
ネオ麦とかの件も昔あったし
コードは上げなくてもいいから暫くは
トリップ外さず定期的にカキコした
ほうがいいんでね?

661:デフォルトの名無しさん
11/04/28 21:57:20.65
>>601のとおりだが、この状態だとコテがスレを占有してるとはいいがたい状況だよなぁ。

662:デフォルトの名無しさん
11/04/28 22:06:18.05
傍観者気取ってんじゃねーよ

663:デフォルトの名無しさん
11/04/28 22:10:20.94
自分に対する批判を「うざい」と言い、さらにスレ占有の罪を逃れようとする
◆QZaw55cn4cはなかなか小賢しい奴だな

664:デフォルトの名無しさん
11/04/28 22:22:24.48
ああ、俺がQZだと思ってるのか。乙乙。
ID出ればいいのにね。粘着してる方が困るかもしれないけど。

665:デフォルトの名無しさん
11/04/28 22:24:47.07
ほんと小姑みたいな奴が多いのがプログラマとかSE

666:デフォルトの名無しさん
11/04/28 23:01:25.62
>>665
いや、◆QZaw55cn4cはプログラマでもSEでもない、無職中年ニートだから
しかも重度の自己愛性人格障害
人にすごく嫌われているという事実がどうしても認知出来ない、自己評価が
異様に高い割には知能が劣るなど、観察するといろいろ面白いがw

>>660
切れて八つ当たりか
本当に救いようがない奴だよな

667:デフォルトの名無しさん
11/04/28 23:01:33.20
今日も一日一◆QZaw55cn4c

668:デフォルトの名無しさん
11/04/28 23:36:17.69
>>666
QZ本人なのか、QZが好きでたまらないのか、すごいよね。

669:デフォルトの名無しさん
11/04/28 23:37:49.74
>>668
◆QZaw55cn4cはものすごくプライドが高いから自分の事を

>いや、◆QZaw55cn4cはプログラマでもSEでもない、無職中年ニートだから
>しかも重度の自己愛性人格障害
>人にすごく嫌われているという事実がどうしても認知出来ない、自己評価が
>異様に高い割には知能が劣るなど、観察するといろいろ面白いがw

などと「本当の姿」を認められるわけがないってw

670:デフォルトの名無しさん
11/04/28 23:40:06.60
>>669
じゃあ好きでたまらない方か。いつもおつかれさん。

671:デフォルトの名無しさん
11/04/28 23:43:44.28
>>670
「好き」でも「嫌い」でもない
「頭のおかしい人の観察対象」として興味深いだけ

672:デフォルトの名無しさん
11/04/29 04:44:11.41
>>516
和を再利用して、計算回数減らしてみた
篩のところの時間が大部分だから、ほとんど効果ないのがビミョー
#include <stdio.h>
#include <stdlib.h>
#define N 1000000

int main(void)
{
char sieve[N] = {0, 0, 1};
int i, j, k, head, tail, Ans, length, sum, tail_indx, sum_t;
int *prime, prime_cnt, prime_max;

for(i = 3; i < N; i += 2) sieve[i] = 1;
for(i = 3; i * i < N; i += 2) if(sieve[i]) for(j = i * i, k = i * 2; j < N; j += k) sieve[j] = 0;
for(i = prime_cnt = 0; i < N; i++) if(sieve[i]) prime_cnt++;
prime = malloc(prime_cnt * sizeof(int));
for(i = j = 0; i < N; i++) if(sieve[i]) prime[j++] = i;
prime_max = prime[prime_cnt - 1];

Ans = head = tail = sum = 2, length = 1, tail_indx = 0;
for(i = 1, sum = 2; (sum += prime[i]) <= prime_max; i++) if(sieve[sum]) Ans = sum, tail = prime[tail_indx = i], length = i + 1;
sum = Ans;
for(i = 1; (sum += (prime[++tail_indx] - prime[i - 1])) <= prime_max; i++)
for(j = tail_indx + 1, k = length + 1, sum_t = sum; (sum_t += prime[j]) <= prime_max; j++, k++)
if(sieve[sum_t]) Ans = sum = sum_t, head = prime[i], tail = prime[tail_indx = j], length = k;
printf("%d : %d to %d, %d\n", Ans, head, tail, length);
free(prime);

return 0;
}


673:デフォルトの名無しさん
11/04/29 09:33:26.61
>>518 の間違いです。
にしても、{と}付けてほしい。

674:673
11/04/30 03:24:25.47
スレリンク(tech板:136番)

675:デフォルトの名無しさん
11/04/30 13:20:05.84
>>660
ご安心下さい。
スレリンク(tech板:210番)
このスレに誘導することは、もはやありませんが、今日も一本書いてみました。
スレリンク(tech板:570番)


676:デフォルトの名無しさん
11/04/30 13:44:26.15
◆QZaw55cn4cは糞

677:デフォルトの名無しさん
11/04/30 15:17:10.47
まったくだ

678:デフォルトの名無しさん
11/04/30 19:40:48.02
2chで金儲けっていいの?

679:673
11/05/01 10:37:31.41
136
それはどんな計算式を使うんですか?
計算機でも分かる仕様書を書いて持って来い。<--と、モリタポ

680:デフォルトの名無しさん
11/05/01 23:54:42.25
糞スレ

681:デフォルトの名無しさん
11/05/02 06:59:09.86
>>641
10倍どころじゃねえしwww 100倍早いとか速すぎワロタwww
そして涙目の◆QZaw55cn4cである。あれ?息してない?www

682:デフォルトの名無しさん
11/05/02 08:56:55.28
>>681
◆QZaw55cn4cはプライドを粉々に打ち砕かれて遁走しましたw

683: ◆XEE2zLj0dE
11/05/02 09:48:15.38
スレも削除されないみたいだし、終わった宿題をぐだぐだ続けるスレとして再利用してはどうだろう。

スレリンク(tech板:626番)
パラメータわざわざこっちにあわせてくれてありがとう。

これはこちらの環境では逆順出力時にSIGSEGVだったよ。
desc指定がわかりにくかっただろうか。

684:デフォルトの名無しさん
11/05/02 10:02:11.70
空いてる便所の再利用か

685:デフォルトの名無しさん
11/05/02 11:45:24.99
なもんで、ぐだぐだ続く場合はこっちでいいのかな。

スレリンク(tech板:629番)
落ちなくなったし速度も速いね。

686:デフォルトの名無しさん
11/05/02 21:22:07.61
問題1
スレリンク(tech板:495番)
問題2
スレリンク(tech板:134番)

687:デフォルトの名無しさん
11/05/02 23:19:56.28
>>686 問題1
URLリンク(ideone.com)

問題2は固い頭では全然わかりませんし、またわかりませんでした。

688:デフォルトの名無しさん
11/05/03 14:07:00.66


689:デフォルトの名無しさん
11/05/06 03:36:19.84
/* スレリンク(tech板:393-494番)n */
int main(){
  int array[10][10];
  /*配列に対して何かしらの処理*/

  /*配列に0が含まれるかチェック*/
  int i, j;
  for (i=0;i<10;i++) {
    for (j=0;j<10;j++) {
      if (array[i][j]==0) break;
    }
    if(j != 10) break;
  }
  if(i==10 && j==10)
    /*含まれていない場合の処理*/
    printf("0は含ませません");
  else
    /*含まれていた場合の処理*/
    printf("0が含まれています");
  return 0;
}

690:デフォルトの名無しさん
11/05/06 03:43:07.75
>if(i==10 && j==10)

691:デフォルトの名無しさん
11/05/06 03:56:43.58
>>689
で?別関数にしてreturnすればいい話なんだが

692:デフォルトの名無しさん
11/05/06 04:05:48.43
スレ違い

693:デフォルトの名無しさん
11/05/06 04:08:50.99
>>689
含ませてくださいよ

>>690



694:デフォルトの名無しさん
11/05/06 04:14:40.76
◆QZaw55cn4cは糞だよなぁ

695:デフォルトの名無しさん
11/05/06 23:17:51.99
まさに糞スレ

696:デフォルトの名無しさん
11/05/07 01:58:54.06
うんこみたいなスレですね

697:デフォルトの名無しさん
11/05/07 02:16:59.40
◆QZaw55cn4cがうんこみたいなもんだからな

698:デフォルトの名無しさん
11/05/07 11:43:07.60
だな
◆QZaw55cn4c==排泄物
臭いだけで役に立たない

699:デフォルトの名無しさん
11/05/07 17:13:35.13
この人、あれからも性懲りもなく別の問題をといているみたい。
スレリンク(tech板:668番)
理解不能。

700:デフォルトの名無しさん
11/05/07 18:52:19.65
まじ糞だな

701:デフォルトの名無しさん
11/05/07 22:59:54.89
無職だから暇で暇でしょうがないんだろうな
金もなくて買い物も出来なくて

702:デフォルトの名無しさん
11/05/07 23:00:49.64
最近は正体隠して糞コードを流布してるのか

703:デフォルトの名無しさん
11/05/07 23:03:40.28
いまいち隠し切れていないところに、煩悩が見え隠れしている。

704:デフォルトの名無しさん
11/05/08 13:47:52.43
コンビニでも何でもいいから働けよ◆QZaw55cn4c
ハッキリ言ってやるけど、おまえの知能じゃ職業プログラマーなんて無理だっての…
いいかげん気づけ? プログラムは趣味にしとけば?

705:デフォルトの名無しさん
11/05/08 15:50:52.00
>>704
それが無理だから中年ニートを続けてるんじゃないかなあ?
自己愛性人格障害は「自分はこんな所で収まるタマじゃないぞ、すごいんだぞ」
という修正不能な異常に高いプライドを持っているので、コンピニで働く事は
まず考えられないですね

706:デフォルトの名無しさん
11/05/08 15:52:12.35
知能の低い者に言われても説得力がないと思うが。

707:デフォルトの名無しさん
11/05/08 16:46:55.35
◆QZaw55cn4cの知能が低くてPGに不向きなのは今まで投稿されたコードを見ても明らかなんだが

708: ◆QZaw55cn4c
11/05/08 17:19:40.56
コメントしておきます。

>>705
「修正不能な異常に高いプライドを持っている」という意識は全くありません。ただのアマチュアですし。
しかしあなたからは、そう見えるようですね。どんなところから、プライドが高いと感じたか教えていただけませんでしょうか。

>>707
>今まで投稿されたコードを見ても明らかなんだが
ほう、具体的に例をあげて説明いただけませんでしょうか。

709:デフォルトの名無しさん
11/05/08 17:23:22.63
他人の指摘を素直に受け入れない点
自分が間違っててもとりあえず何か言い返す
もしかしたら、自分の間違いが理解できないくらいの低脳って可能性もあるが

710:デフォルトの名無しさん
11/05/08 17:41:50.08
>>709
>他人の指摘を素直に受け入れない点
おかしいですね。間違いがあれば修正版を作成するなり、ごめんなさい宣言を出すなり、率直に反応しているつもりですが。
このスレ(前スレでもいいですが)で、そのような私のレスがあれば例示していただけないでしょうか。

>自分が間違っててもとりあえず何か言い返す
それは、自分の間違いに気づいていないか、あるいは間違いだとは認識していないのでしょうね。
いずれにしても説得力が足りないのでは?

>もしかしたら、自分の間違いが理解できないくらいの低脳って可能性もあるが
低能でなくとも自分の間違いには気づきにくいものです、あなたのように。

711:デフォルトの名無しさん
11/05/08 17:46:28.31
まさに言ったとおりのレスw

712:デフォルトの名無しさん
11/05/08 17:49:17.29
>>599以降のやりとりを見れば、説得力が足りないんじゃなくて ◆QZaw55cn4cの頭が悪すぎるのは一目瞭然

713:デフォルトの名無しさん
11/05/08 17:52:49.62
>>708
>しかしあなたからは、そう見えるようですね。どんなところから、プライドが高いと感じたか教えていただけませんでしょうか。

お断りします。どうせ言ったって馬耳東風か、屁理屈で返すんでしょ。
こちらも不愉快な想いはしたくないもんでね。自分で考えろカス。

>ほう、具体的に例をあげて説明いただけませんでしょうか。

えっマジで言ってんのそれ?あんたが書いたコードより遙かに性能がいいコードを
他の人がいくつも投稿したのをまさか見てないと言い逃れしないよね?
いつまでも糞みたいな二分木にこだわって、頭が硬化してきているのは明らか。
やっぱPG35才定年説は正しい。

714:デフォルトの名無しさん
11/05/08 17:55:33.51
前に指摘したら、そんな昔のことは覚えてないとか抜かしやがったからなw

715:デフォルトの名無しさん
11/05/08 18:04:59.09
低能じゃあ◆QZaw55cn4cの馬鹿さ加減を表現し切れないと思って、あえて低脳って言葉にしたんだがw
◆QZaw55cn4cは揚げ足とれたとか思って大喜びみたいだけど

716:デフォルトの名無しさん
11/05/08 18:07:22.24
>>713
>えっマジで言ってんのそれ?あんたが書いたコードより遙かに性能がいいコードを
>他の人がいくつも投稿したのをまさか見てないと言い逃れしないよね?

あのう、私は自分のコードが最善だとも最高だともいっておらず、
ただ「参考になる」としか述べていません。
それどころか、考え方のちがう別実装に喜んでいたりしていたのですが。(あとベンチを取ってくれる人もおられました。)
スレリンク(tech板:611番)

>いつまでも糞みたいな二分木にこだわって、頭が硬化してきているのは明らか。
こだわっているのではなくて、自分のコードに重大な欠点
スレリンク(tech板:612番)
があることを認識したので、自分が書いた以上、とりあえずの修正を行ったまでのことです。
ニ分木にこだわっていたわけではありませんよ。

717:デフォルトの名無しさん
11/05/08 18:14:21.59
>>712
たしかにこれは私の認識に問題があった例ですね。固いといわれても仕方がない。
しかし、問題の部分が理解できなくとも、その部分の全体に対する影響度を調べた (>>592) 上で
判断しましたから、これ以上は求めてもしかたがないでしょう。

718:デフォルトの名無しさん
11/05/08 18:18:53.14
頭が悪いを、固いに摩り替えるなよw

これ以上求めても仕方ないってどういう意味?
お前にコードの内容を理解するのを求めるのはムダってこと?

719:デフォルトの名無しさん
11/05/08 18:26:02.57
>>716
ほらね

>あのう、私は自分のコードが最善だとも最高だともいっておらず、

誰もあんたのコードを性能がいいとかセンスがあるとか言ってないでしょ
あんたのコードより遙かに短くて遙かに性能がいいコードを他の人が
書いてるよって指摘したのに屁理屈で返すその癖は一生治らないだろうね
人に嫌われて終わり

720:デフォルトの名無しさん
11/05/08 18:29:40.22
頭が悪くて理解できないのに、自分が理解できないのは相手の説得力がないからだとか平気で言えちゃうんだなw

721:デフォルトの名無しさん
11/05/08 18:40:15.47
>>719
確かに話のラインがずれていましたね。
私のコードがとりたててどういうことはない、ということを双方が認識しているのならば、それ以上はいうことはないですね。



722:デフォルトの名無しさん
11/05/08 18:40:37.31
>>720
まさにそれが自己愛性人格障害の特徴だよ

URLリンク(homepage1.nifty.com)

・御都合主義的な白昼夢に耽る。
・自分のことにしか関心がない。
・高慢で横柄な態度。
・特別な人間であると思っている。
・自分は特別な人間にしか理解されないと思っている。
・冷淡で、他人を利用しようとする。
・批判に対して過剰に反応する。
・虚栄心から、嘘をつきやすい。
・有名人の追っかけ。
・宗教の熱烈な信者。

宗教はどうか知らないが、他は全部◆QZaw55cn4cによく当てはまっている
もし◆QZaw55cn4cが妙な新興宗教にはまっていたら確定だな

723:デフォルトの名無しさん
11/05/08 18:44:27.91
>>718
頭の悪い私が、頭の悪い私にとって都合の悪い場面に遭遇したときに、それでも公平さを失わずに対応したつもりです。
頭が悪いなりに >>592 で適切な判断を行えただけで十分で、それ以上のことは、頭の悪い私に求めても、まあむりでしょう。

くらいの意味です。
バスジャックを敢行したりしませんでした、あたりまえですが。

724:デフォルトの名無しさん
11/05/08 18:45:00.16
◆QZaw55cn4cが>>518を解いたコードは本当にゴミクズだろw

725:デフォルトの名無しさん
11/05/08 18:46:00.48
>>592が適切な判断とか、本気で言ってんの?

726:デフォルトの名無しさん
11/05/08 18:47:13.69
>>720
私の頭が悪いのは、私の意志でそうしたわけではない、という理屈が思い浮かびました。

まあちょっといいすぎでしたね。撤回します。

727:デフォルトの名無しさん
11/05/08 18:47:20.54
自分にとことん甘い人間が公平さとか、一体何の冗談なんだろう

728:デフォルトの名無しさん
11/05/08 18:48:36.31
>>725
ええ。素直に負けを認めた点だけが。

729:デフォルトの名無しさん
11/05/08 18:49:32.38
>>592

>ベルトランの仮説(チェビシェフにより証明)

あたりは>>722

>・有名人の追っかけ。

に相当するな

つまり自分の力がないものだから虎の威を借る狐というわけだ

730:デフォルトの名無しさん
11/05/08 18:50:01.23
>>724
エラトステネスのふるいを使わなければ、ゴミといわれても仕方ないですね。大失敗です。

731:デフォルトの名無しさん
11/05/08 18:50:52.80
ああ、コードを全く理解せずに的外れなことをほざいて説明を要求したことは反省してないのか

732:デフォルトの名無しさん
11/05/08 18:51:04.25
>>723
>バスジャックを敢行したりしませんでした、あたりまえですが。

◆QZaw55cn4cがバスジャックを敢行したらある意味祝福に値するな
自分の殻を破れるんだから
それまでは井の中の蛙だ

733:デフォルトの名無しさん
11/05/08 18:51:33.18
>>729
そういわれてもしかたないですね。n から 2n までの間に素数が一個ある、という事実を知っていたのが仇でした。

734:デフォルトの名無しさん
11/05/08 18:52:00.62
>>730
やっぱり篩の速度に負けただけとか思ってんだなw
本当にクソなのはその後の部分だから

735:デフォルトの名無しさん
11/05/08 18:52:37.87
>>731
あれ?コードはおおかたは理解していましたよ。的外れのことをいっていたとは、どのレスですか?

736:デフォルトの名無しさん
11/05/08 18:52:57.25
>>733
ほらまた一言多い
こいつは本当に性格が悪いな

737:デフォルトの名無しさん
11/05/08 18:53:23.25
>>733
まるで他の人はそれを知らないみたいな言い草だなw
知ってても普通の人はそれが関係ないなら影響されたりしないってだけなのに

738:デフォルトの名無しさん
11/05/08 18:54:19.85
◆QZaw55cn4cが刑事事件を起こしたら多分弁護士を付けずに
自分一人で被告人台に立って屁理屈をこね回したあげく裁判官の
心証を極めて悪くして求刑以上の判決が下りそうw

739:デフォルトの名無しさん
11/05/08 18:54:19.94
>>734
うん、それは知りたいですね。よろしければ、ぜひ教えてください。

>>592 で負けを認めていますので遺恨はまったくありませんから、ここでパアッとさらすのもいいと思います。

740:デフォルトの名無しさん
11/05/08 18:55:18.14
>>736
なるほど、それが悪いというわけですね。ご指摘ありがとうございます。

741:デフォルトの名無しさん
11/05/08 18:56:46.98
他人のコードと比較して、自分のコードのクソさが理解できないってどうしようもないよな

742:デフォルトの名無しさん
11/05/08 18:58:54.87
>>737
そうですね。影響されてしまいました。
でも、その影響がどれくらいのものかは実測したつもりです。

743:デフォルトの名無しさん
11/05/08 19:00:46.20
>>741
まあ、そういわずに教えてくださいな。>>559 がクソだとは思っておりますから。

744:デフォルトの名無しさん
11/05/08 19:03:33.32
>>738
それはないと思いますよ。その道の専門家にお金を出すのがベストだと思っています。

745:デフォルトの名無しさん
11/05/08 19:06:04.57
>>591>>672を見ても理解できないなら、何言っても無駄

746:デフォルトの名無しさん
11/05/08 19:07:00.30
>>742
実測?自分の頭の悪さを実測したの?

747:デフォルトの名無しさん
11/05/08 19:14:24.81
>>746
ええ。実測しながら自分の頭の悪さをつくづく思い知らされました。

748:デフォルトの名無しさん
11/05/08 19:17:03.87
>>745
それはエラトステネスのふるいにのっとった形でのベスト形であって、>>559 の考え方にそってやったとしても
もっといい方法がある、ということは示していませんよね。

>>734
>やっぱり篩の速度に負けただけとか思ってんだなw
>本当にクソなのはその後の部分だから
というのなら、>>559 の枠組みの中でも、まだよりよい方法があるということですよね。

749:デフォルトの名無しさん
11/05/08 19:18:17.55
素数の配列だけでやっても591や672のほうが圧倒的に上

750:デフォルトの名無しさん
11/05/08 19:24:29.88
>>748
つーか、あんなアホみたいなやり方が素数の配列でのベストとか思ってたのか?
何回ムダに数えりゃ満足すんだよw

751:デフォルトの名無しさん
11/05/08 22:08:20.48
なんで◆QZaw55cn4cは◆QZaw55cn4cを外してるわけ?
まぁ発言で丸分かりだから関係ないけど

752:デフォルトの名無しさん
11/05/09 02:55:18.58
>>749, >>750
なるほど、確かにまだいい方法がありました。一度作った素数表を潰す発想はありませんでした。
お付き合いいただきありがとうございました。

>>518
>>549 の改良です。
URLリンク(codepad.org)

速度はそんなには速くなっていないようです。大きな配列をコピーする分だけ負担が大きいのかもしれません。
URLリンク(codepad.org)


753:デフォルトの名無しさん
11/05/09 03:04:58.23
うん、まったくコードが理解できてないってことはわかった

754:デフォルトの名無しさん
11/05/09 03:59:16.94
◆QZaw55cn4cは糞だよなぁ

755:デフォルトの名無しさん
11/05/09 06:35:23.83
>static int sumS[TABSIZE];
頭悪すぎて吹いたw

756: ◆XEE2zLj0dE
11/05/09 06:58:59.04
>>752
単にコードを貼ってもいいんだけど、意図も書いといてみる。

>>752の枠組みで改善していくとして。
こちらの環境で20回ループさせた時の速度内訳はこんな感じ。
 トータル 1.95sec
 素数テーブル作成(maketable) 1.37sec
 その後の処理 0.58sec
仕事であれば、maketableの改善を最優先するのが当然だけど、
スレの流れ的に不適当だと思い、その後の処理を対象にした。

ネックとなっている部分が、枝刈りの不十分さとfoundpにあると思われ、かつ
(sumS[j] % 2)によってfoundpの呼び出し回数を減らす工夫が見られたため、
そちらを改善することにした。

// 元コード
if ((sumS[j] % 2) && foundp(sumS[j], n)) {
if (k > max_k) {
max_i = i; max_j = j; max_k = k; max_s = sumS[j];
}
}
// fix 最大値を更新できるときだけ探せば良いので条件変更
if (k > max_k && (sumS[j] % 2) && foundp(sumS[j], n)) {
max_i = i; max_j = j; max_k = k; max_s = sumS[j];
}

単純ではあるけれど、変更後の速度(変更部のみ)
 その後の処理 0.10sec

さらに改善を行おうとするならもうちょっとすすめれば0.07secぐらいにはなったが、今回はここまで。

757:デフォルトの名無しさん
11/05/09 11:46:43.76
◆QZaw55cn4cは糞だよなぁ

758:デフォルトの名無しさん
11/05/09 12:28:49.58
>>756
そんなとこより根本的な問題は、起点の素数から小さいほうを足していくっていう頭の悪すぎるやり方だろ

759:デフォルトの名無しさん
11/05/09 14:15:36.51
こいつにプログラムを組ませたら、動くには動くが、コンピュータの性能を殺した
もっさり動作の無駄の多いプログラムばかり組む

宿題スレではそれでもいいかもしれないが、PGとしては致命的

760:デフォルトの名無しさん
11/05/09 14:17:37.85
無駄を省くとか、シンプルに書くとかいう思考ができないからな

761:デフォルトの名無しさん
11/05/09 14:23:44.12
QZaw55cn4cさん?のコードを多分1万倍くらい加速しました。
URLリンク(codepad.org)

762: ◆XEE2zLj0dE
11/05/09 14:55:07.20
>>758
sumS使ってるやつだとそれしにくいんだけど、上のほうのなら適用できるかも。
それはQZに任せるとして、>>672のもそれいえると思う。
でも、配列を逆アクセスすることになるから逆に遅くなったりはしないかな。
かといって素数リストを降順にしたものを作るのもイマイチ?
各種検証できたらいいなぁと思う。

763:761
11/05/09 15:10:04.08
761
こちらのちょっとしたミスでデータが間違ってました。
修正したのを明日にでもあげるかもしれません

764:デフォルトの名無しさん
11/05/09 15:13:59.38
>>672をちょっと改良

#include <stdio.h>
#include <stdlib.h>
#define N 1000000
int main(void)
{
char sieve[N] = {0, 0, 1};
int i, j, k, head, tail, Ans, length, sum, tail_indx, sum_t;
int *prime, prime_cnt, prime_max;
for(i = 3; i < N; i += 2) sieve[i] = 1;
for(i = 3; i * i < N; i += 2) if(sieve[i]) for(j = i * i, k = i * 2; j < N; j += k) sieve[j] = 0;
for(i = prime_cnt = 0; i < N; i++) if(sieve[i]) prime_cnt++;
prime = malloc(prime_cnt * sizeof(int));
for(i = j = 0; i < N; i++) if(sieve[i]) prime[j++] = i;
prime_max = prime[prime_cnt - 1];
for(i = 1, sum = 2; (sum += prime[i]) <= prime_max; i++);
while(sieve[sum -= prime[i--]] == 0);
Ans = sum, head = 2, tail = prime[i], tail_indx = i, length = i + 1;
for(i = 1; (sum += (prime[++tail_indx] - prime[i - 1])) <= prime_max; i++) {
for(j = 1, sum_t = sum; (sum_t += prime[tail_indx + j]) <= prime_max; j++);
while(j > 1) {
if(sieve[sum_t -= prime[tail_indx + j--]]) {
Ans = sum = sum_t, head = prime[i], tail = prime[tail_indx += j], length += j;
break;}}}
printf("%d : %d to %d, %d\n", Ans, head, tail, length);
free(prime);
return 0;}


765:デフォルトの名無しさん
11/05/10 00:37:30.62
761のプログラムとか見てると何気にQZのコードって凄いんじゃないかと
(超並列実行対応)

766:デフォルトの名無しさん
11/05/10 00:47:37.25
◆QZaw55cn4cは糞だよなぁ

767:デフォルトの名無しさん
11/05/10 03:06:55.02
何気に…
static にしないメリットは、スタック上に毎回新しく領域が作られるから、
オブジェクトモジュールのコピーに耐えられる。

768:デフォルトの名無しさん
11/05/10 03:16:39.03
>>758
これについて考察してみました。

>>549 を題材に、起点から大きい方向に足していくものと小さい方向に足していくものとを比べてみました。

なお、以下の改良を加えています。
>>549 の素数算出(素朴な方法)は割り算を一回にする(div_t div(int a, int b) を使う。)
>>549 の二分探索ルーチンは条件文を1つ削減
>>756 の枝刈りをとれる

起点は2から大きい方向に動き、起点からの走査方向は正
URLリンク(codepad.org)
起点は2から大きい方向に動き、起点からの走査方向は負(オリジナルの>>549 や、sumS[] を使った >>752に近い)
URLリンク(codepad.org)
こちらでプロファイラを使ってもみましたが、両者に差はほとんど認められませんでした。

また >>764 はふるいと素数配列の両方を適材適所に使用して効率を上げていますが、
これを素数配列のみでかきなおしたもの
URLリンク(codepad.org)

結局、素朴法がしょぼすぎ、エラトステネスのふるいの威力が強過ぎで、他での稼ぎはほとんど顕在化しませんでした。

769:デフォルトの名無しさん
11/05/10 03:23:29.51
小さいほうから大きい方を足してくことで、余計な計算を省く工夫をつけられるのが最大の利点なのに、
それを無視すれば同じになるに決まってるだろw

770:デフォルトの名無しさん
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



最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch