1000以内的完数有哪些?

如题所述

有三个,6、28、496。

第一个完全数是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,有约数1、2、4、8、16、31、62、124、248、496,除去其本身496外,其余9个数相加,1+2+4+8+16+31+62+124+248=496。

推导公式:

大数学家欧拉曾推算出完全数的获得公式:如果p是质数,且2^p-1也是质数,那么(2^p-1)X2^(p-1)便是一个完全数。

例如p=2,是一个质数,2^p-1=3也是质数,(2^p-1)X2^(p-1)=3X2=6,是完全数。

例如p=3,是一个质数,2^p-1=7也是质数,(2^p-1)X2^(p-1)=7X4=28,是完全数。

例如p=5,是一个质数,2^p-1=31也是质数,(2^p-1)X2^(p-1)=31X16=496是完全数。

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2019-10-14
完数,即完美数,一个数如果恰好等于除它本身外的因子之和,这个数就称为完数。例如6=1+2+3.(6的因子是1,2,3)
求1000以内的完数的C语言代码如下:
#include <stdio.h>
int main()
{
int n=1000;
int r,j,i;
for(i=1;i<=n; i++){
r = 0;
for(j=1;j<i;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三个数字。本回答被网友采纳
第2个回答  2018-11-01

#include <stdio.h>
void main()
{
int i,j;
printf("1000之内的所有完数:\n");
for(i=6;i<1000;i++){

int sum=0;

for(j=1;j<i;j++){

if(i%j==0)

sum = sum+j;

}
if(sum==i)printf("%d,",i);

}

}

输出结果为:6,28,496

原代码中的sum 初始化的位置是错误的,导致结果不正确,正确代码请看我的回答。

扩展资料:

完数,一般指完全数,一个自然数如果它的所有真因子(即除了自身以外的约数)的和等于该数,那么这个数就是完全数,如:6的真因子有1 、2、3,6=1+2+3,所以6是一个完全数。

求1000以内的完数可以用C,C++、java和Pascal语言等,下面举例java语言实现代码。

用java编写1000以内的完数如下:

public class PerfectNumber {    public static void main(String[] args) {    System.out.println("1000以内的所有完数有:");    for (int i = 2; i < 1000; i++) {// 遍历1000以内的所有整数      int sum = 0;// 定义和变量      for (int j = 1; j < i; j++) {        if (i % j == 0) {// 满足是i的因子,就累加          sum += j;        }      }      if (sum == i) {// 满足因子之和等于i就打印该完数        System.out.print(i + " ");      }    }  }}
第3个回答  2020-07-05
完数的定义就不多说了,下面用python来求解1000以内完数:
def f(n):
s=[]
for i in range(1,n):
if n%i == 0:
s+=i
return s
###定义函数f(n),返回整数n除本身外的因数之和
for i in range(1,1001):
if i == f(i):
print(i)
第4个回答  2020-12-08

相似回答