2015-02-06 55 views
-1

我剛開始編程。我寫了一個簡單的C程序來檢查素數,但它不起作用。請幫我找出我的錯誤。爲什麼這個程序檢查素數不起作用?

#include<stdio.h> 
void main() 
{ 
    int n,i,c=0; 
    printf("enter any number: "); 
    scanf("%d", &n); 
    for(i=2;i<n;i++) 
    { 
    if(n%i==0) 
     c=c+1; 
    if(c>0){ 
     break; 
     printf("\n%d is not a prime number",n); 
    } 
    } 
    if(i==n) 
    printf("\n%d is a prime number",n); 
} 
+4

您的編譯器不會在'break;'後發出語句警告嗎? – 2015-02-06 18:41:26

+0

不知道爲什麼它不工作,但在這裏看起來像一個無用的變量。爲什麼不這樣做:if(n%i == 0) {stuff in here} – 2015-02-06 18:42:20

回答

1

如果printf("\n%d is not a prime number",n);後把break該程序正常工作。當C執行break命令時,它立即跳出最近的循環,因此它不執行循環中的下一行,即不打印它不是質數。

+0

...但是如果輸出行以換行符結束,並且'c'確實不需要,那麼應該會更好在代碼行中更多地使用空格,輸出中使用的字符串中的隨機空間更少,並且該標準支持'int main()'而不是'void main()',並且該算法效率不高... – 2015-02-06 18:46:58

+0

@JonathanLeffler事實上,你寫的都是真的!他是初學者,所以他會學習這些東西。我只是試圖解決爲什麼程序不能正常工作,這是他的問題。其他的東西更多的是關於程序的風格和效率。 – 2015-02-06 18:52:44

+0

是的,這很好(限制答案的範圍是可以的);這就是爲什麼我發表評論而不是強迫我的信息成爲答案。 – 2015-02-06 18:54:23