2011年6月21日 星期二

d290: 完全數

內容 :
    完全數是除本身外所有因數之和等于該數的數。
    早在公元2世紀末,人們已經找到了前4个完全數:6,28,496,8128。
    直到13世紀,時隔千年,才有人找到了第5個完全數,你知道它是多少嗎?

輸入說明 :
    <無>

輸出說明 :
    輸出第5個完全數。

程式碼 :
#include<stdio.h>
#include<math.h>
int main()
{
    long i,j,test,sum,sqr,temp;
    
    for(i=11;;i++)
    {
        test = (1<<(i-1))*((1<<i)-1);//wiki公式
        sum = 1;
        sqr = sqrt(test)+1;
        
        for(j=2;j<sqr;j++)
        {
            if(test%j == 0)
            {
                temp = test / j;
                sum = sum + j + temp;
                if(j == temp)
                    sum = sum - j;
            }
        }
        sum = sum - test;
        if(sum==0)
        {
            printf("%d\n",test);
            break;
        }
    }
    return 0;
}



http://zerojudge.tw/ShowProblem?problemid=d290

沒有留言:

張貼留言