スポンサー広告

    スポンサーサイト

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

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

    C言語でProject Euler 【Problem12】

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


    /* Problem 12 † */
    /*
    三角数の数列は自然数の和で表わされ、
    7番目の三角数は 1 + 2 + 3 + 4 + 5 + 6 + 7 = 28 である。

    三角数の最初の10項は
    1, 3, 6, 10, 15, 21, 28, 36, 45, 55, ...
    となる。

    最初の7項について、その約数を列挙すると、以下のとおり。

    1: 1
    3: 1,3
    6: 1,2,3,6
    10: 1,2,5,10
    15: 1,3,5,15
    21: 1,3,7,21
    28: 1,2,4,7,14,28

    これから、7番目の三角数である28は、6個以上の約数をもつ最初の三角数であることが分る。
    では、501 個以上の約数をもつ最初の三角数はいくらか。
    */


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

    int func(int);

    int func(int num)
    {
        int i = 1, j, cnt = 0;

        j = num;
        while(i < j){
            if(num % i == 0){
                j = num / i;
                if(i == j)
                    cnt++;
                else
                    cnt = cnt + 2;
            }
            i++;
        }

        return cnt;
    }

    int main(void)
    {
        int num, cnt, i;

        num = 0;
        i = 1;

        while(1){
            num = num + i;
            i++;
            cnt = func(num);

            if(cnt >= 501)
                break;

        }

        printf("%d, %d\n", cnt, num);

        getch();
        return 0;
    }




    <<解>> 76576500 (約数 576個)


    Project Euler(プロジェクトオイラー)Problem12です。
    前に教えていただいてから
    教えてください!!C言語でProject Euler 【Problem12】
    今頃になってしまいました。

    Project Euler(プロジェクトオイラー)Problem12、眺めていたら、教えていただいたのとは違う考えですが、ひらめいたので、自分なりにやってみました。

    約数を求めるのに、割り切れるということは、もう片方の数字があるんだ!と。
    例えば28の約数は、1, 2, 4, 7, 14, 28
    2を求めれば14がでてくるし、4を求めれば7がでてくる、ということを利用しました。
    6 × 6 = 36 という同じ数のパターンもあるので、そこは注意。

    ん~約数とか素数とか、いろんな考え方があるんですね。
    C言語に限ったことでなないけれど、アルゴリズムって難しいですね



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


    スポンサーサイト

    カテゴリ

    最新記事

    WiMAX & WiFi & モバイル

    便利ソフトいろいろ

    最新トラックバック

    最新コメント

    カウンター

    BlogRancking



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