簡體   English   中英

如何在隨機數數組中找到素數?

[英]How to find prime numbers in an array of random numbers?

我在隨機生成的整數數組中查找質數時遇到問題。

我嘗試使用“ for”循環遍歷數組中的每個元素,以檢查它是否是質數。 盡管它從數組中打印出一些整數,但它們不是素數。

public static void main(String[] args) {
        defineTable();
        printPrimeNumbers();
    }

    private static int[] tab;

    private static int[] defineTable(){
        tab = new int[100];
        for (int i = 0; i < tab.length; i++){
            tab[i] = randomFill();
        }
        return tab;
    }

    private static int randomFill (){
        Random rand = new Random();
        int randomInt = rand.nextInt();
        return randomInt;
    }


    private static void printPrimeNumbers(){
        boolean isPrime = true;
        for (int i = 0; i < tab.length; i++){
            int num = tab[i];
            for (int j = 2; j < num; j++){
                if (num % j == 0){
                    isPrime = false;
                    break;
                }
            }
            if(isPrime){
                System.out.println(num + " jest liczbą pierwszą.");
            }
        }
    }

這個問題有解決方案嗎? 我四天前開始學習Java。 到目前為止,一切進展順利,我了解大部分基本知識。 但是對於初學者來說,這個問題對我來說似乎太復雜了。

編輯:我將大多數代碼變量從波蘭語翻譯成英語,因為我的母語是波蘭語,希望它是可以理解的。

你只設置isPrimetrue之初printPrimeNumbers 一旦找到第一個復合數字,它將變為false ,您再也不會將其重置為true來測試下一個數字。

在編寫Java代碼時,請嘗試將任務拆分為多個函數(僅應用於一個目的)。 對於您的代碼,將確定質數的邏輯提取到單獨的方法中,並傳遞隨機數以檢查其是否為質數,如果是,則打印,否則不打印或不執行任何操作。

請檢查以下代碼段

查找質數的一種簡單有效的方法

public static boolean isPrime(int n) {  
           if (n <= 1) {  
               return false;  
           }  
           for (int i = 2; i <= Math.sqrt(n); i++) {  
               if (n % i == 0) {  
                   return false;  
               }  
           }  
           return true;  
       }  


private static void printPrimeNumbers(){
        for (int i = 0; i < tab.length; i++){
        if(isPrime(tab[i])){ 
        System.out.println(tab[i] + " jest liczbą pierwszą.");
       } 

    }

暫無
暫無

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

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