Fibonacci数列の繰返しC言語の詳細:Fn=Fn-1+Fn-2


Fibonacci数列の繰返しC言語の詳細:Fn=Fn-1+Fn-2
1.Fnを10007で割った剰余を求める
#include    
#define M 10007    

int main()    
{    
    int a1,a2;    
    a1=a2=1;    
    int temp; //temp          
    long n; //  n>=1 and n<=1000000   
    long i;    
    scanf("%ld",&n);    

    for(i=1;i//a1   f(n);a2 f(n+1) 
        //a1+a2=f(n+2)
        temp=a2;
        a2=(a1+a2)%M;
        a1=temp;
    }   
    printf("%d
"
,a1); return 0; }

2.n番目の数-時間複雑度O(n)アルゴリズムを求める
#include    
int main()    
{    
    int a1,a2;    
    a1=a2=1;    
    int temp; //temp          
    long n; //  n>=1 and n<=1000000   
    long i;    
    scanf("%ld",&n);    

    for(i=1;i//a1   f(n);a2 f(n+1) 
        //a1+a2=f(n+2)
        temp=a2;
        a2=a1+a2;
        a1=temp;
    }   
    printf("%d
"
,a1); return 0; }

3.n番目の数-時間複雑度O(nlogn)アルゴリズムを求める
#include  
int Fibo(int n)  
{  
    if(n==1||n==2)  
         return 1;  
    else  
        return Fibo(n-1)+Fibo(n-2);  
}  

int main()  
{  
    int n=0; 
    scanf("%d",&n);       
    printf("%d
"
,Fibo(n)); return 0; }