2015-09-14 59 views
-3
#include<stdio.h> 
int main() 
{ 
    int i, j, a, b, c=0; 
    scanf("%d %d", &a, &b); 
    for(i=a; i<=b; i++) 
    { 
     for(j=1; j<=i; j++) 
     { 
      if(i%j==0) 
      { 
       c++; 
      } 
     } 
     if(c==2) 
     { 
      printf("%d\n", i); 
     } 
    } 
    return 0; 
} 

程序素數但不會爲一個給定的範圍內打印素數。請幫忙。對於給定的範圍

+0

尋求調試幫助的問題(「爲什麼不是這個代碼工作?」)必須包含所需的行爲,特定的問題或錯誤以及在問題本身中重現問題所需的最短代碼。沒有明確問題陳述的問題對其他讀者無益。請參閱:如何創建最小,完整和可驗證示例。 – Olaf

+0

了'如果(C == 2)'部分應該在for循環的'Ĵ== 0' – MarmiK

+0

@Olaf充分注意到其他部分.. –

回答

1

你必須每次迭代後重置c0。該循環應該是這樣的

for(i=a; i<=b; i++) 
{ 
    c = 0; 
    ... 

的建議,你不必去,直到數每次檢查素性,你可以去到那的平方根。

+0

感謝ü@Haris ... –

+1

如果它是最佳的安排有關以這種方式,你只需要遍歷* primes *直到平方根。當然,如果你這樣做,你需要改變對'c'的依賴。 – Bathsheba