簡體   English   中英

用簡單的方法在Java中打印質數

[英]print prime numbers in java in a simple way

我想制作一個代碼來打印所有素數..我在Java中完成了此代碼..我在isPrime方法的if語句中遇到問題,我不知道如何實現..這是代碼

public class PrimeList {

    private boolean [] numbers;

    /** Creates a complete filled out, the prime list of the numbers from 1 to n */
    public PrimeList(int n) {

        numbers = new boolean [n];
    }
    /** Prints all primes found */
    public void printPrimeList() {
        StringBuilder sb = new StringBuilder();
        for(int i=0; i<numbers.length; i++) {
        if(isPrime(i)==true) {
            sb.append(i +",");
        }
        }
        System.out.print(sb.toString());
        }

    /** Returns true if the NBR is a prime number that is listed,
    false in all other cases */
    public boolean isPrime(int nbr) { 
        if(nbr == 2) {
            return true;
        } else if (nbr/2 gives an int number && nbr/3 gives an int number ) {
            return false;
        } else {
            return true;
        }

    }

    public static void main(String[] args) {

        PrimeList primes = new PrimeList(100);
        primes.printPrimeList();

    }
}

如您所見, else if (nbr/2 gives an int number && nbr/3 gives an int number ) {我不知道如何實現它?

請幫助我實施此if語句..

謝謝 :)

本質上,您要執行的操作是遍歷所有整數x直到nbr的平方根,然后檢查nbr / x的余數是否為0

要獲得除法運算的余數,必須使用模數運算符%

例:

for (int i=2; i<=Math.sqrt(nbr); i++) {
    if (nbr % i == 0) {
        // we found a number that divides evenly into nbr without 
        // any remainder, therefore this number is not a prime.
        return false;
    }
} 
return true;

將其作為練習來找出為什么只需要迭代到平方根的練習。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM