您好,这是我第一次在这里问一个问题,我读了指导原则,我找了一个答案,没有找到一个,所以我希望我的问题是在指导方针。无论如何,我被困在一个简单的Java练习中,我必须输出前N个完美数字(在数论中,一个完美数字是一个正整数,它等于它正确的正因数之和,即它的总数不包括本数(也被称为其等分总和)正除数)。所以我做了这个Pefect Number Java
import java.util.Scanner;
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int cont = 0;
int num = 1;
int soma = 0;
System.out.println("Quantos números perfeitos?");
int n = in.nextInt();
while (cont < n) {
for (int i = 1; i <= num/2; i++) {
if (num % i == 0) {
soma = soma + i;
}
}
if (num == soma) {
System.out.println(num + " é perfeito.");
cont++;
}
num++;
}
}
它陷在一个无限循环,我无法找出原因。无论如何,如果有人可以帮助我,我会很感激,如果我的问题已经得到解答,或者如果这只是一个愚蠢的问题抱歉,正如我所说,这是我第一次问。谢谢。
欢迎StackOverflow上。如果你有一个集成的开发环境,我建议你在几行放置断点,特别是soma = soma + i和if(num == soma)。 (如果你没有IDE,请将System.out.println中的一些重要变量) – rajah9
可能是因为'cont ++'只是在完美数字时才会增加。第一个非完美的号码会卡在循环中。我认为while循环条件应该是'while(num
AntonH
只是一般性的建议,而不是答案,这可能对你来说显然很明显,但这可能是一个问题,for循环永远不会产生一个数字,其中'soma == num'。因此,“cont ++”永远不会被执行,因此“cont
SpencerD