完全数 Java
Pefect Number Java
你好,这是我第一次在这里提问,我阅读了指南,我确实在寻找答案但没有找到答案,所以我希望我的问题在指南之内。无论如何,我被困在一个简单的 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 练习中,我必须输出前 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++;
}