亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Java程序給出兩個區間之間的素數

Java程序給出兩個區間之間的素數

守著一只汪 2023-10-13 15:07:54
我需要一個程序來打印任意兩個間隔之間的所有素數,然后打印兩個間隔之間有多少個素數。所以我有一個正在運行的代碼,但它不會打印數字 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
查看完整描述

4 回答

?
婷婷同學_

TA貢獻1844條經驗 獲得超8個贊

只需在循環之前添加以下幾行for,它就會給出預期的輸出:


int x = 0;

if (first<3) {

    System.out.println(2);

    x++;

}

您的更新程序將是:


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;

    if (first<3) {

        System.out.println(2);

        x++;

    }

    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);

  }

}


查看完整回答
反對 回復 2023-10-13
?
阿波羅的戰車

TA貢獻1862條經驗 獲得超6個贊

內循環忽略數字 2。 j < i => 2 < 2 為 false



查看完整回答
反對 回復 2023-10-13
?
慕村225694

TA貢獻1880條經驗 獲得超4個贊

您可以檢查此代碼(經過優化,因為它在大范圍內運行得更快。在迭代所有數字之前循環返回)


 public static void main(String args[]) {

        int first;

        int last;

        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 (int i = first; i <= last; i++) {

            if (isPrime(i)) {

                x++;

                System.out.println(i + " ");

            }

        }

        System.out.println("Total number of prime numbers between " + first + " and " + last + " are " + x);

    }


    static boolean isPrime(int n)

    {

        if (n <= 1) //less than 2 are not

            return false;

        if (n <=3) // 2 and 3 are prime

            return true;


        if (n % 2 == 0 || n % 3 == 0)

            return false;


        for (int i = 5; i * i <= n; i = i + 6)

            if (n % i == 0 || n % (i + 2) == 0)

                return false;


        return true;

    }

你不需要旗幟。


查看完整回答
反對 回復 2023-10-13
?
繁花如伊

TA貢獻2012條經驗 獲得超12個贊

嘗試這個:



import java.util.Scanner;


public class Main {

    public static void main(String args[]) {

        int i, n;

        int num;

        int maxCheck;

        boolean isPrime = true;

        String primeNumbersFound = "";


      Scanner sc=new Scanner(System.in);

      System.out.println("Enter the first number: ");

        num = sc.nextInt();

        System.out.println("Enter the second number: ");

        maxCheck= sc.nextInt();


        for (i = num; i <= maxCheck; i++) {

            isPrime = CheckPrime(i);

            if (isPrime) {

            primeNumbersFound = primeNumbersFound + i + " ";

            }

        }

        System.out.println("Prime numbers from " + num + " to " + maxCheck + " are:");


        System.out.println(primeNumbersFound);


}


public static boolean CheckPrime(int n) {

    int remainder;

    for (int i = 2; i <= n / 2; i++) {

        remainder = n % i;

        if (remainder == 0) {

        return false;

          }

        }

        return true;


        }

}


查看完整回答
反對 回復 2023-10-13
  • 4 回答
  • 0 關注
  • 168 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號