www.pudn.com > solomon.rar > solomon.c


#include 
#include 

//Solomon Golomb sequence 
unsigned int solomon (unsigned int n)
{
    static unsigned int f[3];
    f[0]=0; f[1]=1; f[2]=2; f[3]=2;
    unsigned int k;
    unsigned int total,t,next;
    if(n>3){
        total=5;t=3;next=3;;
        while(n>total){
            for(k=solomon(t);k>0&&n>total;++next,--k){
                total=total+t;
            }
            t++;

        }
        return next;
    }else{
        return f[n];
    }
    return 0;
}


int main(){
    printf("selomon sequence demo:");
    printf("f(100)=%lu\n",solomon(100));
    printf("f(9999)=%lu\n",solomon(9999));
    printf("f(123456)=%lu\n",solomon(123456));
    printf("f(1000000000)=%lu\n",solomon(1000000000));
    return 0;
}