java完数

Python020

java完数,第1张

public class PerfectNum

{

public static void main ( String[] args )

{

for ( int i = 2 i < 1000 i++ )

{

if (perfectNum (1, i) == i)

{

System.out.print (i + " ")

}

}

}

private static long perfectNum ( long start, long num )

{

if (start > num / 2)

{

return 1

}

start++

if (num % start == 0)

{

return start + perfectNum (start, num)

}

else

{

return perfectNum (start, num)

}

}

}

import java.util.Scanner

public class Test1 {

public static void main(String args[]) {

Scanner scanner = new Scanner(System.in)

if(isFullNum(scanner.nextInt())) {

System.out.println("是完数")

}

else {

System.out.println("不是完数")

}

}

//判断一个数字是不是完数,是的话返回true

public static boolean isFullNum(int num) {

int sum = 0

for(int i = 1i <= num/2i++) {

if(num%i == 0)

sum+=i

}

return sum == num

}

}

java中如何判断一个数是否完全数,可以分为求约数(不包括本身)、求约数之和以及比较自身和约数之和是否相等三个步骤。

第一步:求约数

public static List<int>yueShu(int n){

List<int>list = new ArrayList<int>()

for(int i=1i<=n/2i++){

if(n%i==0){

list.add(i)

}

}

return list

}

解析:如果该数除以循环中的变量的余数为零,那么该变量就是该数的约数。其中有个注意点,如果循环变量大于该数的一半之后就不会是该数的余数了(该数本身除外),所以循环到该数一半时便结束。

第二步:求约数之和

public static int sum(List<int>list){

int total=0

Iterator it=list.iterator()

while(it.hasNext()){

total+=it.next()

}

return total

}

解析:利用while遍历List,将List中的值全部加起来。

第三步:比较本身与约数之和是否相等

public static boolean isPerfect(int n){

return n==sum(yueShu(n))

}

如果该数与该数的约数之和相等,则该方法返回true,否则返回false。最后根据该方法的返回值判断该数是不是完全数。