您好,这是我第一次在这里提出问题,我阅读了指南,确实找到了答案,但没有找到答案,所以希望我的问题在指南内。无论如何,我都停留在一个简单的Java练习中,我必须输出前N个完美数(按照数论,一个完美数是一个正整数,它等于其适当的正因数之和,即其正整数的和。正除数,不包括数字本身(也称为等分和)。所以我这样做了
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++;
}
}
它陷入无限循环,我不知道为什么。无论如何,如果有人可以帮助我,我将非常感激,如果我的问题已得到回答,或者只是一个愚蠢的问题,对不起,正如我所说的,这是我第一次问。谢谢。
最佳答案
您的代码看起来不错-您唯一要做的就是每次在while循环中都重置soma
的值。在您当前的代码中,soma
是到目前为止循环的所有数字的适当因子的总和,这不是您想要的。
这是您需要的代码:
Scanner in = new Scanner(System.in);
int cont = 0;
int num = 1;
int soma;
System.out.println("Quantos números perfeitos?");
int n = in.nextInt();
while (cont < n) {
soma = 0; //Don't forget this line
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++;
}
关于java - 完美数字Java,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40730279/