2017-07-15 69 views
-2

這是用於在1到100的一切是除非素數定義的部分簡單的找質數代碼。我知道每當計數器等於2時都存在素數。但是,當計數器加1並在稍後重置爲0時,這是如何工作的。的Java:尋找素數

Public class primeFinder { 
    public static void main (String[] args) { 

     int i = 0; 
     int num = 0; 
     String primeNumbers = ""; 

     System.out.print("Enter the value of n:"); 

     //from here 
     for (i = 1; i <= 100; i++) {    
      int counter = 0;  
      for(num = i; num >= 1 ; num--) { 
       if(i % num == 0) { 
        counter++; 
       } 
     } 

      if (counter == 2) { 
       primeNumbers = primeNumbers + i + " "; 
      } 
     }  
     //To here 
     System.out.print("Prime numbers from 1 to 100 are : "); 
     System.out.println(primeNumbers); 
    } 
} 
+0

我建議你使用['isPrime(INT)'](https://stackoverflow.com/a/20798440/2970947)輔助方法。 –

回答

0

每個數字是由自身和數字1整除既然是找到所有的素數,印刷質數後常見的計數器,計數器復位到零,以便它可以在遞增下一個找到下一個素數的迭代(當counter == 2時)。在使用System.out.println()時,它應該是 System.out.println(「從1到100的素數是:」+ primeNumbers);而在使用System.out.println()時,它應該是 System.out.println

用於類的訪問修飾符應該是「公」,而不是「公共」。

public class primeFinder 
    { 
     public static void main (String[] args) { 

    int i = 0; 
    int num = 0; 
    String primeNumbers = ""; 



    //from here 
    for (i = 1; i <= 100; i++) {    
     int counter = 0;  
     for(num = i; num >= 1 ; num--) { 
      if(i % num == 0) { 
       counter++; 
      } 
    } 

     if (counter == 2) { 
      primeNumbers = primeNumbers + i + " "; 
     } 
    }  
    //To here 
    System.out.print("Prime numbers from 1 to 100 are : "+primeNumbers); 
    } 
    } 

OP->從1到100 素數:2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97

+0

你能告訴OP代碼的外觀嗎?並且OP的代碼可能有什麼問題? –

+0

用於該類的訪問修飾符應該被命名爲「public」而不是「Public」(第一行代碼)。在對System.out.println()進行如上所述的更改時,代碼將生成您所需的OP。 – Krishh

+0

這就是我要問,如果你能告訴我們一些工作代碼,那簡直太好了,你甚至可能賺+1 –

0

除了定義素數爲 的部分外,一切都很簡單。我知道有一個素數,每當計數器等於 2.但如何當計數器加1,並重置爲0以後的工作。

這是很簡單的。素數只有2個因素 - 1和數字本身。所以這裏的代碼片段取每個從1到100的數字並向後運行直到1並檢查有多少因素在那裏。如果因子的數量大於2,則該數字不是質數。

+0

好的,我現在得到了那部分。但爲什麼如果(counter == 2)而不是if(counter == 1)? –

+1

它正在計算1和它本身的因素。因此,對於數字5,它會計數5和1 ......唯一的兩個因素。對於數字6,它將計算6,3,2,1。超過兩個因素,所以不是素數。 – phatfingers

0

如果你只是想在0和100之間的檢查primenumbers,我真的會輸出一個常量數組。如果您需要檢查更大的數字,則更好(更快)的算法是sieve of erathostenes。如果這還不夠,你可能需要根據代數數論圖書館

0

你問爲什麼它的工作原理當計數器通過0到100之間的每一個整數設置爲0 的代碼循環,然後執行以下操作:

set Counter to 0 
Divide your int with everyone between 0 and 100 
If rest equals 0, add one to the counter 

甲素是唯一一個和本身整除,所以櫃檯通常是兩個,如果它是一個素數。

Then add the number to the list if count equals two, 
repeat with next number. 

你應該知道,你的代碼是不是最好的做法反正,像其他人所說