我不知道我的代码有什么问题。它应该打印1-100之间的所有完全数。我尝试了嵌套的for循环,do while循环和for循环。但是,代码似乎不正确。
class CompProject1
{
public static void main()
{
int num, sum=0;
int i;
for(num=1; num<100; num++)
{
for(int j = 1; j<=num ; j++)
{
if(num%j==0)
{
sum = sum+j;
}
}
if(sum==num)
{
System.out.println(sum);
}
}
}
}
8条答案
按热度按时间ybzsozfc1#
将代码更改为:
要点:
1.内部迭代完成后,将
sum
重置为01.在 * inner *
for-loop
中,您需要检查是否为tillnum - 1
而不是num
,因为每个数字都可被自身整除mhd8tkvw2#
1)你肯定需要为每次迭代重置sum变量,所以你应该在每个循环中执行
int sum = 0;
。2)你需要迭代while
j <= num/2;
!3)考虑使用Java8,我将在这里为您编写一些示例。
看看我的例子,这是如此美丽:
lokaqttq3#
这似乎是一个作业或家庭作业问题。你应该自己解决这个问题,而不是问堆栈溢出上的人。
然而,你所寻找的有一个答案here。注意!这个代码打印输入的数字是否是完全数,但不打印所有低于100的数字,可能是完全数。这是你的家庭作业。
5f0d552i4#
您需要:
sum = 0
< num
而不是<= num
以下是固定代码:
}
输出:
6
28
g0czyy6m5#
所以,你的代码有一些小问题,我会尽力找出他们.
1.首先,sum变量应该在第一个for循环中
2.第二个循环的极限是
j<num
,而不是j<=num
,因为对于完全数来说,这个数本身不应该计入和。您的代码将如下所示。
我不知道我的代码有什么问题。它应该打印1 - 100之间的所有完全数。我尝试了嵌套的for循环,do while循环和for循环。但是,代码似乎不正确。
k3bvogb16#
}
输出
sauutmhj7#
o3imoua48#
下面是查找perfect numbers的另一种方法。
这将计算前10个完全数。
印刷品