« Project Euler (Problem 2) | Main | Project Euler (Problem 10) »

Project Euler (Problem 2) その2

Haskellがあまりにも遅いので、Cで書くとどうなるか試した。

なんとシステムタイムは0.000sだ。10年振りのCだが、中身はrubyと変わらないので、一応書くことができた。でも、gccから喰らうエラー一点は見逃している(だって、動くんだもん)。

普段、コンパイルを必要とする言語で処理を書くことはないが、偶には、Cも書かねば・・・と思った瞬間である。

c=2, r=2, sum=0 c=5, r=8, sum=2 c=8, r=34, sum=10 c=11, r=144, sum=44 c=14, r=610, sum=188 c=17, r=2584, sum=798 c=20, r=10946, sum=3382 c=23, r=46368, sum=14328 c=26, r=196418, sum=60696 c=29, r=832040, sum=257114 c=32, r=3524578, sum=1089154 r=5702887 sum=4613732

real 0m0.145s user 0m0.140s sys 0m0.000s


#include    <stdio.h> 
main(){
    int c,r;
    int sum = 0;

    for( c=1; c < 400; c++ ){
        r = fiv( c );

        if( 4000000 < r ){
            printf("r=%d sum=%d\n",r,sum );
            exit( 0 );
        }else if( (r % 2) == 0 ){
            printf( "c=%d, r=%d, sum=%d\n",c,r,sum );
            sum = sum + r;
        }
    }
}

int fiv( int n ){
    int r;

    if( n <= 0 ){
        r = 0;
    }else if( n == 1 ){
        r = 1;
    }else if( n == 2 ){
        r = 2;
    }else{
        r = fiv( n-1 ) + fiv( n-2 );
    }
    return( r );
}

preタグの中身は改行だらけになるが、対処法がわからないので、これにて失礼。
(2024/7/29 にMarkdownに修正。Mardownをデフォルトにしたいのだが。。。#include <stdio.h>が消えるのが悲しい。が、なんとか出せた。)

|

« Project Euler (Problem 2) | Main | Project Euler (Problem 10) »

Comments

Post a comment



(Not displayed with comment.)


Comments are moderated, and will not appear on this weblog until the author has approved them.



TrackBack


Listed below are links to weblogs that reference Project Euler (Problem 2) その2:

« Project Euler (Problem 2) | Main | Project Euler (Problem 10) »