2014-09-27 70 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 

但因为我看不到你的代码的其余部分,我不能确信这一点。但是,这种变化将避免零分。