完数(Perfect number的形式 

欧几里德证明了:一个偶数是完数,当且仅当它具有如下形式:2^(p-1)*(2^p-1)  

其中2^p-1是素数 

完全数Perfect number)是一些特殊的自然数:它所有的真因子(即除了本身以外的约数 )的和,恰好等于它本身。 

例如:第一个完全数是6,它有约数1236,除去它本身6外,其余3个数相加,

126。第二个完全数是28,它有约数12471428,除去它本身28外,其余5个数相加 ,124 + 7 + 1428。后面的数是4968128。   

古希腊数学家欧几里德是通过 2^(n-1)*(2^n-1) 的表达式发现头四个完全数的。

当 n = 2^1*(2^2-1) = 6 

当 n = 2^2*(2^3-1) = 28 

当 n = 2^4*(2^5-1) = 496   

当 n = 2^6*(2^7-1) = 8128  

欧几里德证明了:一个偶数是完数,当且仅当它具有如下形式:2^(n-1)*(2^n -1)

(2^n-1)必须是素数。  

尽管没有发现奇完数,但是当代数学家奥斯丁·欧尔(Oystein Ore)证明,若有奇完全数,则其形状必然是12p + 136p + 9的形式,其中p是素数。在1018以下的自然数中奇完数是不存在的。  

6284968128335503368589869056(10)1 3 7438691328(12),   2305843008139952128(19)……  

偶完数都是以68结尾。如果以8结尾,那么就肯定是以28结尾。 

6以外的偶完数,把它的各位数字相加,直到变成一位数,那么这个一位数一定是1(亦即  :除6以外的完数,被9除都余1。):  

282+8=101+0=1  

4964+9+6=191+9=101+0=1 

所有的偶完数都可以表达为2的一些连续正整数次幂之和

2p - 122p - 2: <:以下an次方表示形式为a(n)> 

6=2(1 ) + 2(2 ) 

28=2(2 ) + 2(3) + 2(4) 

496=2(4) + 2(5) + ... + 2(8)  

8128=2(6) + 2(7) + 2(8)+... + 2(12)   

33550336=2(12) + 2(13 ) + 2(14)... + 2(24)   

每一个偶完数都可以写成连续自然数之和:  

6=1+2+3   

28=1+2+3+4+5+6+7;   

496=1+2+3+…+30+31   

6以外的偶完数,还可以表示成连续奇数的立方和(被加的项共有):   

28=1(3) + 3(3)   

496=1(3) + 3(3) + 5(3) + 7(3)   

8128=1(3 ) + 3(3) + 5(3) + ... + 15(3)   

33550336=1(3) + 3(3) + 5(3) + ... + 125(3) + 127(3)   

每一个完数的所有约数(包括本身)的倒数之和,都等于2: 

1/1 + 1/2 + 1/3 + 1/6 =2  

1/1 + 1/2 + 1/4 + 1/7 + 1/14 + 1/28 =2  

它们的二进制表达式也很有趣:   

(6)10 = (110)2   

(28)10 = (11100)2? 


判断一个数是否完数

#include<stdio.h>
#include<math.h>
int main()
{
	__int64 i,n,sum,k,t;
	while(scanf("%I64d",&n)!=EOF)
	{
		t=0;
		if(n%10==6||n%10==8)
		{
			sum=3;
			sum+=n/2;
			for(i=3,k=9;k<n;i++)
			{	
				if(n%i==0)
				{
					sum+=(i+n/i);
				}
				k+=i+i+1;
			}				
			if(k==n) sum+=i;
			if(sum==n)
				t=1;
		}	
		if(t)printf("YES!\n");
		else printf("NO!\n");
	}
	return 0;
}

posted on 2011-07-16 15:50  pcoda  阅读(691)  评论(5编辑  收藏  举报