我试着创建了一个程序来寻找一个范围内的质数.用户被要求输入两个数字,然后程序的目标将是打印出第一个数字和最后一个数字之间的质数.
下面是我的代码:
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
// program to check prime numbers b/w two numbers
Scanner sc = new Scanner(System.in);
byte factorsCount = 0;
System.out.println("Enter first number: ");
int numOne = sc.nextInt();
System.out.println("Enter second number: ");
int numTwo = sc.nextInt();
System.out.println("The prime numbers are: ");
for (int i = numOne+1; i < numTwo; i++) {
for (int j = 1; j <= i; j++) {
if (i%j == 0) {
factorsCount++;
}
}
if (factorsCount == 2) {
System.out.println(i);
}
}
}
}
问题是,该计划并没有像预期的那样运作.对于某些NumOne和NumTwo,它打印一些质数,而对于其他一些,它什么都不打印
我打算让它工作的方式如下:
- 它要求用户输入第一个号码和第二个号码.然后,它创建一个变量来存储NO.某一特定数字所具有的因素
- 外部的for循环遍历第一个和第二个数字之间的数字
- 内部for循环计算一个数具有的因数数
- 在内部循环完成后,它中断内部循环,然后判断factorsCount是否等于2.如果是,则它是质数,因此它会打印出来,如果不是,它只会转到范围内的下一个数字
- 它重复第一步到第四步,直到它用尽了范围内的数字,然后它一定已经打印了所有质数