2016-02-24 43 views
1
public class JavaP3 { 
    /** 
    * @param args the command line arguments 
    */ 
    public static void main(String[] args) { 
     for (int n = 1; n < 1001; ++n) { 
      boolean red = isPrime(n); 
      if (red = true) { 
       System.out.println("Prime #" + "\t" + n); 
      } 
     } 
    } 

    public static boolean isPrime(int num) { 
     if (num == 1 || num == 2) { 
      return true; 
     } 

     if (num % 2 == 0) { 
      return false; 
     } 

     for (int i = 3; i <= Math.sqrt(num); i += 2) { 
      if (num % i == 0) { 
       return false; 
      } 
     } 
     return true; 
    } 
} 

這似乎應該運行,因爲它是一個非常簡單的循環。打算使用isPrime方法打印1-1000之間的所有素數。有什麼明顯的我失蹤了,for循環出了什麼問題,或者主要方法的位置有問題?Java Prime編號爲循環失敗

+0

你的for循環是想着g'{}'。 –

+0

這個'if(red = true){'是賦值(不是平等測試)。嘗試'if(red == true){'**或**'if(red){' –

+0

'1'不是素數。 '='不是'=='(反正你不需要'==')。 – dasblinkenlight

回答

1

您正在分配truered=賦值運算符。相反,==運算符比較相等性。但是因爲它已經是boolean,所以沒有必要進行比較。用途:

if (red) { 
0

替換=與==在if條件
if(red == true)

if(red)

0

你需要做2度的變化。

1)變化,如果(紅色=真),以如果(紅色)

原因 - 如果(紅色=真)將總是爲真,並沒有任何意義

2)變化 對(INT I = 3;我< = Math.sqrt(NUM); I + = 2)

 if (num % i == 0) 

      return false; 

    return true; 

for (int i=3; i <= Math.sqrt(num); i += 2) 
    { 

     if (num % i == 0) 

      return false; 
    } 
    return true; 
+0

感謝您的建議更改,但它仍未運行。你有任何其他想法嗎? – darrac

+0

使用不同的邏輯代替您的邏輯打印素數可以嗎? –

+0

是的,但我不確定這個特定的邏輯有什麼問題。 – darrac