我写了这两个方法来确定一个数字是否完美。我的教授希望我把它们结合起来,看看是否有一个奇怪的完美数字。我知道没有一个(已知),但我需要实际编写代码来证明这一点。
问题在于我的主要方法。我测试了两种测试方法。我尝试了调试,它被卡在数字5上,虽然我无法弄清楚为什么。这是我的代码:
public class Lab6
{
public static void main (String[]args)
{
int testNum = 3;
while (testNum != sum_of_divisors(testNum) && testNum%2 != 2)
testNum++;
}
public static int sum_of_divisors(int numDiv)
{
int count = 1;
int totalDivisors = 0;
while (count < numDiv)
if (numDiv%count == 0)
{
totalDivisors = totalDivisors + count;
count++;
}
else
count++;
return totalDivisors;
}
public static boolean is_perfect(int numPerfect)
{
int count = 1;
int totalPerfect = 0;
while (totalPerfect < numPerfect)
{
totalPerfect = totalPerfect + count;
count++;
}
if (numPerfect == totalPerfect)
return true;
else
return false;
}
}
答案 0 :(得分:2)
请
testNum%2 != 2
作为
testNum%2 != 0
答案 1 :(得分:0)
testNum=3
while (testNum != sum_of_divisors(testNum) && testNum%2 != 2)
testNum++;
您可能想要'testNum + = 2',因为您只关心奇数并用testNum&gt; 0或其他停止条件替换testNum%2!= 2。最终你的整数会溢出。
“我的教授希望我将它们结合起来,以确定是否有一个奇怪的完美数字。我知道没有一个(已知),但我需要实际编写代码来证明这一点。”
你的意思是3&amp; 2 ^ 32-1?不知道没有奇数的完美数字。