2015-10-29 111 views
-1

因此,對於類,我們正在使用素數進行一些加密/解密算法。我正在製作節目的第一部分。我試圖讓程序檢查一個數是否爲素數。在此之後,我希望程序將所有素數存儲在名爲prime_array的數組中。我試圖讓這些結果在屏幕上打印出來。這不符合我的意圖。我稍後會用這個解密一些更復雜的東西。如果任何人都能看到我的代碼的哪一部分導致了這些問題,只是漫遊。C編程,陣列打印不正確

代碼:

#include <stdio.h> 

    int main() 
    { 
     int n; 
     int prime; 
     int prime_array[1000]; 
     int prime_answer; 
     int j=0; 

     printf("enter a number for n : "); 
     scanf_s("%d", &n); 

     if (n % 2 == 1) 
     { 
      printf("Number is prime."); 
      getchar(); 
      getchar(); 

      for (int i = 0; i <= n; i++) 
      { 
       if (n - 1 % 2 == 1) 
       { 
        n--; 
        prime_array[j] = n; 
        j++;  
       } 
       else 
       { 
        // do nothing 
       }  
      }  
     } 
     else if (n % 2 == 0) 
     { 
      printf("Number is not prime."); 
      getchar(); 
      getchar(); 

     } 

     for (int k = 0; k<= 10; k++) 
     { 
      printf("\n\n %d",prime_array[k]); 
      if (k == 10); 
      { 
       getchar(); 
       getchar();  
      }  
     }   
} 
+0

不是很瞭解你想與做的底部循環的東西。 –

回答

3

問題是這樣的條件 -

if (n - 1 % 2 == 1) 

這exression被視爲(n-(1 % 2))==1,因爲%具有更高的優先級比-,因此,1 % 2首先計算如1 % 21和expres sion變成n-1,所以條件將不會是true,直到n2不是你想要的)。

你需要寫這樣的 -

if ((n - 1) % 2 == 1) 
+0

嗯,是不是'(n - 1)%2 == 1'幾乎與'n%2 == 0'一樣? (如果我們忽略負數) – chux

+0

@chux這將是類似的。哦,所以如果第一個條件是「真」,並不總是會執行「else」部分嗎? – ameyCU