1000以内的完数

Description
编程找出1000之内的所有完数。一个数如果恰好等于它的因子(不包含自身的所有因子)之和,这个数就称为“完数”。例如,6的因子为1、2、3,而6=1+2+3,因此6是完数。
Input

Output
每个完数和它的因子之和单独占一行
Sample Input
Sample Output
6=1+2+3
Source
关键是怎么让输出有+号

求1000以内的完数的C语言代码如下:

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

如果一个数恰好等于它的真因子之和,则称该数为“完全数”。第一个完全数是6,第二个完全数是28,第三个完全数是496,33550336等等。截至2018年,相关研究者已经找到51个完全数。

完数,即完美数,一个数如果恰好等于除它本身外的因子之和,这个数就称为完数。例如6=1+2+3.(6的因子是1,2,3)。


#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三个数字。

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2018-11-01
完数,即完美数,一个数如果恰好等于除它本身外的因子之和,这个数就称为完数。例如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个回答  2019-03-05
#include<stdio.h>
int main()
{
int i,j,sum;
for(i=1;i<=1000;i++)
{
sum=0;
for(j=1;j<i;j++)
if(i%j==0)
sum=sum+j;
if(i==sum)
{
printf("%d its factors are ",i);
for(j=1;j<i;j++)
if(i%j==0)
printf("%d,",j);
printf("\n");
}
}
return 0;
}
结果:
6 its factors are 1,2,3,
28 its factors are 1,2,4,7,14,
496 its factors are 1,2,4,8,16,31,62,124,248,
Press any key to continue
第3个回答  2021-04-03
#include <stdio.h>
#include <math.h>
int main()
{
int i,j,sum=0;
for(i=1;i<=1000;i++) {
for(j=1;j<i;j++){
if(i%j==0)
sum=sum+j;}
if(i==sum) //满足是完数再执行
{ printf("%d its factors are ",i);
for(j=1;j<i;j++)
{if(i%j==0) printf("%d ",j);}//此为求完数的因子
printf("\n");}//求得一个完数后换行
sum=0;
}
}
第4个回答  2020-03-05
Java小白,过来对下答案,顺便发个Java的。
public class wanshu{
public static void main(String[] args){

for(int i= 1;i<1001;i++){
int sum = 0;
for(int k =1;k<i;k++){
if(i%k==0){
sum+=k;
}
}
if(sum == i){
System.out.println("1000以内的完数有:"+i);
}

}

}

}
相似回答