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.Scannerpublic 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。最后根据该方法的返回值判断该数是不是完全数。