用java代码求1000之内的所有完全数

Python014

用java代码求1000之内的所有完全数,第1张

import java.util.ArrayList

public class Testa {

public static void main( String[] args ) {

ArrayList<Integer>arrayList = new ArrayList<Integer>()

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

int k=0

for(int j=1j<ij++){

if(i%j==0){

k+=j

}

}

if(k==i){

arrayList.add( i )

}

}

System.out.println(arrayList)

}

}

public class Test {

    public static void main(String[] args) {

        int i,j,sum    //sum用来存放因子之和        

        for(i=1i<1000i++)   //对1到1000以内的数依次尝试

        {

           sum = 0          //给sum赋值,同时也是对上一次的值清空

           for(j=1j<=i/2j++)   //查找因子

           {

               if(i%j==0)          // 如果是因子

               {

                    sum+=j        //把当前的因子累加到sum中   

               }

           }

           if(sum==i)            //判断是不是完数,即因子之和等于自身

           {

               System.out.print(i+" its factors are:   ")        //是完数,输出

            for(j=1j<=i/2j++)                          //再次找出这个完数的因子

            {

               if(i%j==0)                                    //输出各个因子

                System.out.print(j+", ")

               }

               System.out.println()

            }

        }

    }

}

这些题百度里面都是找得到的

#include <stdio.h>

void main()

{

int i,j

printf("1000之内的所有完数:\n")

for(i=6i<1000i++){

int sum=0

for(j=1j<ij++){

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 = 2i <1000i++) {// 遍历1000以内的所有整数      int sum = 0// 定义和变量      for (int j = 1j <ij++) {        if (i % j == 0) {// 满足是i的因子,就累加          sum += j        }      }      if (sum == i) {// 满足因子之和等于i就打印该完数        System.out.print(i + " ")      }    }  }}