2009-12-28 70 views
0

我想用方法打印出數組中所有素數。我可以用一個int 來做,但不知道如何從數組中返回某些數字。感謝幫助!打印出數組中的素數

public static boolean isPrime(int [] tab) { 
     boolean prime = true; 
     for (int i = 3; i <= Math.sqrt(tab[i]); i += 2) 
      if (tab[i] % i == 0) { 
       prime = false; 
       break; 
      } 
     for(int i=0; i<tab.length; i++) 
     if ((tab[i]%2 !=0 && prime && tab[i] > 2) || tab[i] == 2) { 
      return true; 
       } else { 
      return false; 
     } 
     //return prime; 

} 

謝謝你們倆。看起來似乎解決:

public static void isPrime(int[] tab) { 
     for (int i = 0; i < tab.length; i++) { 
      if (isPrimeNum(tab[i])) { 
       System.out.println(tab[i]); 
      } 
     } 


    } 

    public static boolean isPrimeNum(int n) { 
     boolean prime = true; 
     for (long i = 3; i <= Math.sqrt(n); i += 2) { 
      if (n % i == 0) { 
       prime = false; 
       break; 
      } 
     } 
     if ((n % 2 != 0 && prime && n > 2) || n == 2) { 
      return true; 

     } else { 
      return false; 
     } 
    } 

回答

2

我建議你分成兩種方法是:

  • 一種方法來確定一個單一的數字是否是素迭代
  • 一種方法通過一個數組,調用每個數字的第一個方法,並打印出方法返回值爲true的值。

這兩個問題整齊地分開。如果你堅持如何做到這一點,請詳細說明哪一點你很難找到。 (我假設這是功課,這就是爲什麼我一直不只是包含的代碼。)

0

假設你有:

  • 一個整數數組,有些是素數,有些是不是素數。
  • 用於測試其中一個數字是否爲素數的函數。

簡單迭代這個數組,併爲每個號碼:

if (isPrime(n)) { 
    system.out.println(n); 
} 

你可能不希望嘗試做多整數一次,一次一個應該是很多簡單的代碼。