C言語でProject Euler(プロジェクト・オイラー)に挑戦 > スポンサー広告 > C言語でProject Euler 【Problem10】

    C言語でProject Euler(プロジェクト・オイラー)に挑戦 > Project Euler(プロジェクト・オイラー)【Problem 6~10】 > C言語でProject Euler 【Problem10】

    スポンサー広告

    スポンサーサイト

    上記の広告は1ヶ月以上更新のないブログに表示されています。
    新しい記事を書く事で広告が消せます。

    Project Euler(プロジェクト・オイラー)【Problem 6~10】

    C言語でProject Euler 【Problem10】

    Project Euler(プロジェクトオイラー)のproblem10☆
    C言語を使っています。


    /* Problem 10 †*/
    10以下の素数の和は 2+3+5+7=17 である。
    200万以下の全ての素数の和を計算しなさい。


    #include <stdio.h>
    #include <math.h>
    #include <conio.h>

    int main(void)
    {
        int i=2, j, flg;
        double ans=0;

        while(i <= 2000000){
            flg=0;

            for(j=2; j<=(int)sqrt(i); j++){
                if(i%j == 0){
                    flg = 1;
                    break;
                }
            }

            if(flg==0){
                ans += i;
            }

            i++;
        }

        printf("%.lf\n", ans);

        getch();
        return 0;
    }


    でた素数
    C言語でProject Euler 【Problem7】と同じやり方で素数を求めました。
    Problem7のときは、時間が気にならなかったけど、200万以下となると・・・
    数秒待たないとダメです。
    正直、気になるくらいの時間です

    はじめはアルゴリズムを考える【素数】の「その1」でやってみました。
    とても時間がかかり、まったく使い物なりません。
    「その2」に変えてみましたが、それでもまだ時間がかかる。
    これこそ、「エラトステネスのふるい」を使うときなのでしょうか・・・
    わかっていてもちょっと逃げてしまいます

    Project Euler(プロジェクトオイラー)を続けるためには、まず素数の求め方「エラトステネスのふるい」を会得する必要があるのかも。
    Project Euler(プロジェクトオイラー) problem10、も「エラトステネスのふるい」を使えば速くなるのかどうかは、まだ試していません。
    できたらまた報告します!

    C言語だから遅い、とかそういうのはないと思うので、やっぱりアルゴリズムの問題ですよね




    ☆応援お願いします☆
    にほんブログ村 IT技術ブログ C/C++へ
    にほんブログ村


    <<C言語でProject Euler 【Problem11】C言語でProject Euler(プロジェクト・オイラー)に挑戦基本情報技術者試験 日程変更>>

    <<C言語でProject Euler 【Problem11】C言語でProject Euler(プロジェクト・オイラー)に挑戦基本情報技術者試験 日程変更>>

    コメント

    コメントする

    トラックバック


    この記事にトラックバックする(FC2ブログユーザー)

    カテゴリ

    最新記事

    WiMAX & WiFi & モバイル

    便利ソフトいろいろ

    最新トラックバック

    最新コメント

    カウンター

    BlogRancking



    上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。