输出1000以内的所有的完数

用C语言编写程序
2024-11-20 18:19:42
推荐回答(5个)
回答(1):

/*输出1000以内的所有完数并输出其因子*/

#include

int main(){

int sum = 0;

for (int i = 1; i <= 1000; i++){

sum = 0;

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

if (i%j == 0){

sum = sum + j;

}

}

if (sum == i){

printf("%d\n", i);

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

if (i%j == 0)

printf("因子:%d", j);

}

printf("\n");

}

}

return 0;

}

回答(2):

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

输出1000以内的所有完数的代码如下:

  1. Pascal语言实现如下:

    var

      i,j,k:integer;

    begin

      for i:=1 to 1000 do

      begin

        k:=0;

        for j:=1 to i-1 do

          if i mod j=0 then inc(k,j);

        if k=i then writeln(i);

      end;

    end.

  2. C语言实现如下:

    #include
    void main()
    {
    int i,j,k;
    for(i=1;i<=1000;i++)
    {
    k=0;
    for(j=1;j<=i-1;j++)
    if(i%j==0) k+=j;
    if(k==i) printf("%d\n",i);
    }
    }


输出结果皆为

6

28

496

回答(3):

完数,即完美数,一个数如果恰好等于除它本身外的因子之和,这个数就称为完数。例如6=1+2+3.(6的因子是1,2,3)
求1000以内的完数的C语言代码如下:
#include
int main()
{
int n=1000;
int r,j,i;
for(i=1;i<=n; i++){
r = 0;
for(j=1;jif(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三个数字。

回答(4):

public class Test {
/**
 * 求1000以内的所有完数
 * 完数:一个数如果恰好等于它因子之和
 */
public static void main(String[] args) 
{
// TODO Auto-generated method stub
int sum;
for(int i=1;i<=1000;i++)
{
sum=0;
for(int j=1;j<=i-1;j++)
{
if(i%j==0)
{
sum+=j;
if(sum==i)
System.out.print(i+";");
}
}
}
}
}

结果:6;24;28;496

回答(5):

#include
int main()
{
int i,j,sum;
for(i=1;i<=1000;i++)
{
sum=0;
for(j=1;jif(i%j==0)
sum=sum+j;
if(i==sum)
{
printf("%d its factors are ",i);
for(j=1;jif(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,