尝试使用 Java 程序查找具有 4 个因子的数字但输出错误
Trying to Find numbers that have 4 factors with Java Program but Output is Wrong
我正在尝试制作一个 Java 程序,让用户知道他们的号码是否是 RSA 号码(或有 4 个因素)。该程序一直向我显示错误的输出。比如范围为11-15时,不输出2,而是输出0,请指教
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int minimum = in.nextInt();
int maximum = in.nextInt();
int numOfFactors = 2;
int numRSA = 0;
int number = minimum;
while (number>= minimum && number <= maximum){
// condition for nonprime number
for (int i = 2; i <= number/2; ++i) {
if (number % i == 0 && number>=minimum && number<maximum) {
numOfFactors = numOfFactors + 1;
}
}
if (numOfFactors == 4){
numRSA = numRSA + 1;
}
number= number + 1;
}
System.out.println("The number of RSA numbers between " +minimum + " and " +maximum+ " is " +numRSA);
}
}
您需要在 while 循环中初始化 numOfFactors
:
while (number <= maximum){
int numOfFactors =2;
// condition for nonprime number
for (int i = 2; i <= number/2; ++i) {
if (number % i == 0) {
numOfFactors++;
}
}
if (numOfFactors == 4){
numRSA++;
}
number++;
}
您需要为每个数字重置它,然后只有变量会具有该特定数字的因子数。在当前代码中,它存储因子的总和直到该数字,这是导致问题的原因。 (例如:在 12
之后,因子的数量将是 6
,这不会被重置)
我正在尝试制作一个 Java 程序,让用户知道他们的号码是否是 RSA 号码(或有 4 个因素)。该程序一直向我显示错误的输出。比如范围为11-15时,不输出2,而是输出0,请指教
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int minimum = in.nextInt();
int maximum = in.nextInt();
int numOfFactors = 2;
int numRSA = 0;
int number = minimum;
while (number>= minimum && number <= maximum){
// condition for nonprime number
for (int i = 2; i <= number/2; ++i) {
if (number % i == 0 && number>=minimum && number<maximum) {
numOfFactors = numOfFactors + 1;
}
}
if (numOfFactors == 4){
numRSA = numRSA + 1;
}
number= number + 1;
}
System.out.println("The number of RSA numbers between " +minimum + " and " +maximum+ " is " +numRSA);
}
}
您需要在 while 循环中初始化 numOfFactors
:
while (number <= maximum){
int numOfFactors =2;
// condition for nonprime number
for (int i = 2; i <= number/2; ++i) {
if (number % i == 0) {
numOfFactors++;
}
}
if (numOfFactors == 4){
numRSA++;
}
number++;
}
您需要为每个数字重置它,然后只有变量会具有该特定数字的因子数。在当前代码中,它存储因子的总和直到该数字,这是导致问题的原因。 (例如:在 12
之后,因子的数量将是 6
,这不会被重置)