求完数算法

作者在 2008-05-16 10:24:59 发布以下内容

#include<stdio.h>
#include<math.h>
int main()
{
 __int64 a[8]={2,3,5,7,13,17,19,31};  //    perfect=( 2^( n-1 ) )*(2^n-1)   //( 2^n - 1 ) is a prime number  ,

                                                                         //      and n==a[ i ]--->prime number
 __int64 i,n,k,perfect[8];
 while(scanf("%I64d",&n)!=EOF)
  for(i=0;i<8;i++)
  {
   k=pow(2,a[i])-1;
   perfect[i]=(k+1)/2*k;
   if(perfect[i]<=n)
    printf("%I64d\n",perfect[i]);
   else break;
  }
 return 0;
}

算法 | 阅读 2835 次
文章评论,共0条
游客请输入验证码
最新评论