2014-09-27 69 views
-4

所以我正在研究C編程中的Euler的Phi函數。一切似乎都很完美,直到我點擊這段代碼並崩潰。如何解決這個崩潰的C代碼?

while(a[i] != 0 || a[i]!= 1) 
     { 
      m=m*((a[i]-1)/a[i]); 
      i++; 
     } 

在此代碼之前,程序,用戶輸入一個值,然後確定主要因素。

+1

你可能想在'i'大於數組的長度之前停下來。 – sje397 2014-09-27 22:39:02

+1

陣列中有什麼?數組中是否嵌入了終止條件? – swtdrgn 2014-09-27 22:39:33

+2

可能是'||' - >'&&'(因爲'a [i]!= 0 || a [i]!= 1'總是成立的) – BLUEPIXY 2014-09-27 22:40:45

回答

1
a[i] != 0 || a[i] != 1 

這始終是真實的,因爲許多不能同時0和1,您可能會遇到一個零除條件時,a[i]爲零。

我猜你的意思是寫

a[i] != 0 && a[i] != 1 

但因爲我看不到你的代碼的其餘部分,我不能確信這一點。但是,這種變化將避免零分。