一、“完数”的定义—— 完数是一个正整数,且满足以下条件:该数等于它所有因子之和
如:6=1+2+3,28=1+2+4
一个数,如果恰好等于它的因子之和,这个数就称为“完数”。
例如 6 的因子为 1、2、3,而 6 = 1 + 2 + 3,因此 6 就是“完数”。
用 C 语言编程求完数,还是很容易的。
可见:
//编程找出1000以内的所有完数:
#include
void main()
{
int x, i, sum;
x = 1;
while(x <= 1000) { //x要从1到1000循环.
sum = 0; //每算一个新的x时,sum要清0
for(i = 1; i < x; i++) if(x % i == 0) sum += i; //如果i是x的因子,sum加上i
if(x == sum) printf("%d\n", x); //如果因子和等于本身.
x++;
}
}
二、什么叫完全数? 什么叫不完全数?
完全数(Perfect number),又称完美数或完备数,是一些特殊的自然数.它所有的真因子(即除了自身以外的约数)的和(即因子函数),恰好等于它本身.
举例
例如:第一个完全数是6,它有约数1、2、3、6,除去它本身6外,其余3个数相加,1+2+3=6.第二个完全数是28,它有约数1、2、4、7、14、28,除去它本身28外,其余5个数相加,1+2+4+7+14=28.后面的数是496、8128等等.例如:6=1+2+3 28=1+2+4+7+14 496=1+2+4+8+16+31+62+124+248 8128=1+2+4+8+16+32+64+127+254+508+1016+2032+4064
完全数有许多有趣的性质:
1、它们都能写成连续自然数之和
例如:6=1+2+3 28=1+2+3+4+5+6+7 496=1+2+3+……+30+31
2、每个都是调和数
它们的全部因数的倒数之和都是2,因此每个完全数都是调和数.例如:1/1+1/2+1/3+1/6=2 1/1+1/2+1/4+1/7+1/14+1/28=2
3、可以表示成连续奇立方数之和
除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
4、都可以表达为2的一些连续正整数次幂之和
例如:6=2^1+2^2 28=2^2+2^3+2^4 8128=2^6+2^7+2^8+2^9+2^10+2^11+2^12 33550336=2^12+2^13+……+2^24
5、完全数都是以6或8结尾
如果以8结尾,那么就肯定是以28结尾.
6、各位数字相加直到变成个位数则一定是1
除6以外的完全数,把它的各位数字相加,直到变成个位数,那么这个个位数一定是1.(亦即:除6以外的完全数,被9除都余1) 28:2+8=10,1+0=1 496:4+9+6=19,1+9=10,1+0=1
三、完数是什么
完全数,是一些特殊的自然数。它所有 的真因子(即除了自身以外的约数)的和 (即因子函数),恰好等于它本身。
四、什么叫完数?
一个数如果恰好等于除它本身外的因子之和,这个数就称为"完数",也叫“完美数”。例如6=1+2+3.(6的因子是1,2,3) [编辑本段]代码求1000以内的完数的C++语言代码如下:
#include
using namespace std;
int main()
{int n=1000;
int r=0,j,i;
for(i=1;i<=n;i++)
{r=0;
for(j=1;j
{if(i%j==0){r=r+j;}}
if(r==i)
{cout<
return 0;
}
求1000以内的完数的C语言代码如下:
#include
int main()
{
int n=1000;
int r,j,i;
for(i=1;i r = 0; for(j=1;j if(i%j == 0){ r = r + j; } } if(r == i){ printf("the result is:%d\n",r); } } return 0; } 输出结果为: 6,28,496, 即1000以内的完数只有6、28、496三个数字。 用Java编写代码如下(只需修改N即可): {public static void main(String args[]) {intsum=0,i,j; for(i=1;i<=1000;i++) {for(j=1,sum=0;j<=i/2;j++) {if(i%j==0) sum+=j; } if(sum==i) System.out.println("完数:"+i); } } } 求N以内的完数的帕斯卡语言代码如下: var s,i,m:qword; begin for s:=1 to n do begin m:=0; for i:=1 to s-1 do begin if s mod i=0 then m:=m+i; end; if m=s then write(s) end; writeln('over'); end. 得出了第四个完数 8128 --------- 完数(Prefect number的形式------------------------------ 欧几里德证明了:一个偶数是完数,当且仅当它具有如下形式:2^(p-1)*(2^p-1) 其中2^p-1是素数 完全数(Perfect number)是一些特殊的自然数:它所有的真因子(即除了本身以外的约数 )的和,恰好等于它本身。 例如:第一个完全数是6,它有约数1、2、3、6,除去它本身6外,其余3个数相加,1+2+3 =6。第二个完全数是28,它有约数1、2、4、7、14、28,除去它本身28外,其余5个数相加 ,1+2+4 + 7 + 14=28。后面的数是496,8128。 古希腊数学家欧几里德是通过 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 + 1或36p + 9的形式,其中p是素数。在1018以下的自然数中奇完 数是不存在的。 3 [编辑本段]例子6,28、496,8128,33550336,8589869056(10位),137438691328(12位), 2305843008139952128(19位)…… 偶完数都是以6或8结尾。如果以8结尾,那么就肯定是以28结尾。 除6以外的偶完数,把它的各位数字相加,直到变成一位数,那么这个一位数一定是1(亦即 :除6以外的完数,被9除都余1。): 28:2+8=10,1+0=1 496:4+9+6=19,1+9=10,1+0=1 所有的偶完数都可以表达为2的一些连续正整数次幂之和,从2p - 1到22p - 2: <注:以下a的n次方表示形式为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� ====用VB编写代码如下===== Dim i As Integer Dim j As Integer Dim intSum As Integer For i = 1 To 1000 intSum = 0 For j = 1 To Int(i / 2) If i Mod j = 0 Then intSum = intSum + j Next j If intSum = i Then Print i Next i ====用PHP编写代码如下===== 求1000以内的完数的PHP语言代码如下: for($i=1;$i<=1000;$i++) { $wannum=0; for($j=1;$j<$i;$j++) {if ($i%$j==0) {$wannum+=$j;} } if($wannum==$i) echo $i." } ==============================================java代码如下 public class WanShu { public static void main(String[] args) { int s; for (int m = 1; m < 10000; m++) { s = 0; for (int i = 1; i < m; i++) if (m % i == 0) s = s + i; if (s == m) System.out.println(s); } } } 完数有很多,比如6,28、496,8128,33550336,8589869056等,只要一个数恰好等于除它本身外的因子之和,这个数就称为完数。完数,又称完美数或完备数,是一些特殊的自然数。
";五、完数有哪些