我编写了这个java程序,用于打印所有三位数的完美数字,但除了" PERFECT NUMBERS"之外它不会打印任何内容。和"总计: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);
}
}
答案 0 :(得分:2)
您没有将总和重置为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);
}
答案 1 :(得分:1)
将int sum = 0;
移到第一个for
循环中,而不是在外面声明。
答案 2 :(得分:1)
您需要重置外循环的每次迭代sum
。否则,您将继续参考您评估的上一个数字的因素:
for (num=100; num<=999; num++) {
sum = 0;
// Rest of your code
答案 3 :(得分: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);
答案 4 :(得分:-1)
base64data