首页 > 解决方案 > 给出两个区间之间的素数的Java程序

问题描述

我需要一个程序来打印任何两个间隔之间的所有素数,然后打印两个间隔之间有多少个素数。

所以我有一个正在运行的代码,但它不会打印数字 2,我知道 2 是质数。它正在正确地做其他所有事情。我尝试了其他一些可以打印 2 的代码,但如果我输入负数,它也会给出负数。

import java.util.Scanner;

class Main {

  public static void main(String args[]) {

    int first, last, flag = 0, i, j;

    Scanner scanner = new Scanner(System.in);

    System.out.print("\nEnter the lower bound : ");
    first = scanner.nextInt();
    System.out.print("\nEnter the upper bound : ");
    last = scanner.nextInt();
    System.out.println("The prime numbers in between the entered limits are :");

    int x = 0;
    for (i = first; i <= last; i++) {
      for (j = 2; j < i; j++) {
        if (i % j == 0) {
          flag = 0;
          break;
        } else {
          flag = 1;
        }
      }
      if (flag == 1) {
        x++;
        System.out.println(i + " ");
      }
    }
    System.out.println("Total number of prime numbers between " + first + " and " + last + " are " + x);
  }
}

因此,如果我要输入 -5(上限)和 10(下限)它应该打印: 2 3 5 7 -5 和 10 之间的素数总数为 4

但它会打印 3 5 7 -5 到 10 之间的素数总数为 3

标签: java

解决方案


内循环忽略数字 2。j < i => 2 < 2 为假


推荐阅读