-3

我编写了这个java程序来打印所有三位数的完美数字,但是除了“PERFECT NUMBERS”和“Total : 0”之外它不打印任何东西。不允许使用数组和函数(学校作业)。

class PerFect
{
    public static void main(String args[])
    {
        int num, i, sum=0, total=0;
        System.out.println("PERFECT NUMBERS : ");
        for(num=100; num<=999; num++)  
        {
            for(i=1; i<=num; i++)
            {
                if(num%i==0)
                    sum=sum+i;
            }
            if(num*2==sum)
            {
                System.out.println(num);
                sum=0;
                total++;
            }
       }
       System.out.println("Total : "+total);
    }
}
4

5 回答 5

2

您没有将 sum 重置为 0。

public static void main(String args[])
    {
        int num, i, sum=0, total=0;
        System.out.println("PERFECT NUMBERS : ");
        for(num=100; num<=999; num++)  
        {
          sum=0;
            for(i=1; i<=num; i++)
            {
                if(num%i==0)
                    sum=sum+i;
            }

         //System.out.println("Sum : "+sum + " " + num);
            if(num*2==sum)
            {
                System.out.println(num);
                sum=0;
                total++;
            }
       }
       System.out.println("Total : "+total);
    }
于 2018-01-09T07:27:09.333 回答
1

int sum = 0;在第一个循环内 移动,for而不是在外面声明它。

于 2018-01-09T07:26:37.757 回答
1

您需要重置sum外循环的每次迭代。否则,您将继续参考您评估的先前数字的因素:

for (num=100; num<=999; num++) {
    sum = 0;
    // Rest of your code
于 2018-01-09T07:27:38.793 回答
1

您应该在每个循环中将 sum 重置为 0。

int num, i, sum, total=0;
System.out.println("PERFECT NUMBERS : ");
for (num = 100; num <= 999; num++) {
    sum = 0; // you should reset sum every loop.
    for (i = 1; i <= num; i++) {
        if (num % i == 0) {
            sum = sum + i;
        }
        if (num * 2 == sum) {
            System.out.println(num);
            total++;
        }
    }
}
System.out.println("Total : " + total);
于 2018-01-09T07:30:46.487 回答
-1
/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package pkg6.pkg24;

/**
 *
 * @author HieuNguyen
 */
public class Main {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        // TODO code application logic here
        for (int num = 1; num <= 1000; num++) {
            isItPerfectNumber(num);
        }
    }

    public static void isItPerfectNumber(int num) {
        int factor = 1;
        String factors = "Factors: ";
        int total = 0;
        while (factor < num) {
            if (num % factor == 0) {
                total += factor;
                factors += factor + " ";
            }
            factor++;
        }
        if (total == num) {
            System.out.printf("%s is perfect number\n", num);
            System.out.print(factors + "\n");
        }
    }
}
于 2019-05-24T18:02:20.443 回答