2017-01-03 110 views
-7

我想打印1到100之間的素數,我寫下如下的代碼,但是當我運行它時,它開始打印3,7,11,17 ... .91 爲什麼不打印代碼2? 請幫我的朋友用C語言編寫的1到100之間的素數

#include <stdio.h> 
int main(void) 
{ 
    for(int i=2;i<100;i++) 
    { 
     for(int j=2;j<i;j++) 
     { 
      if(i%j==0) 
       break; 
      else if(i==j+1) 
       printf("%d\n",i); 
     } 
    } 
} 
+6

因爲'2%2 == 0'喲必須asume的是,「1和2'是素數,並繼續在那裏 – Netwave

+0

如何以及應該在哪裏修改我的代碼? – user7369637

+0

有很多選項,但我認爲在循環之前只使用'printf(「2 \ n」)'... – Netwave

回答

3

條件i==j+1不會爲i==2是真實的。這可以通過一些改動到內循環被固定:

#include <stdio.h> 
int main(void) 
{ 
for (int i=2; i<100; i++) 
{ 
    for (int j=2; j<=i; j++) // Changed upper bound 
    { 
    if (i == j) // Changed condition and reversed order of if:s 
     printf("%d\n",i); 
    else if (i%j == 0) 
     break; 
    } 
} 
} 
+0

非常感謝你......你解決了我的問題,但是如果你請解釋你的代碼,用代碼寫評論,說明爲什麼我們使用第二個循環,if條件和break語句,我會非常感謝你 – user7369637

+4

你想讓我記錄你的代碼? (代碼的結構是一樣的,我只是修復了一個小錯誤。)這不是StackOverflow的意義。 –

+0

這只是一個請求...反正非常感謝你親愛的 – user7369637

1
#include <stdio.h> 
#include <conio.h> 
int main() 
{ 
    int i,j; 
    int b=0; 
    for (i=2;i<=100;i++){ 
     for (j=2;j<=i;j++){ 
      if (i%j==0){ 
       break; 
      } 
     } 
     if (i==j) 
      print f("\n%d",j); 
    } 
    getch(); 
} 
0
#include<stdio.h> 
main() 
{ 
    int i,j,k; 
    for(i=2;i<=100;i++) 
    { 
     k=0; 
     for(j=2;j<=i;j++) 
     { 
      if(i%j==0) 
      k++; 
     } 
     if(k==1) 
     printf("%d\t",i); 
    } 
} 
1
#include <stdio.h> 

int main() { 

    int i, j; 

    for(i = 2; i<100; i++) { 

     for(j = 2; j <= (i/j); j++) 
     if(!(i%j)) break; // if factor found, not prime 
     if(j > (i/j)) printf("%d is prime", i); 
    } 

    return 0; 
} 
1
#include<stdio.h> 
int main() 
{ 
    int a,b,i,c,j; 
    printf("\n Enter the two no. in between you want to check:"); 
    scanf("%d%d",&a,&c); 
    printf("%d-%d\n",a,c); 
    for(j=a;j<=c;j++) 
    { 
     b=0; 
     for(i=1;i<=c;i++) 
     { 
      if(j%i==0) 
      { 
       b++; 
      } 
     } 
     if(b==2) 
     { 
      printf("\nPrime number:%d\n",j); 
     } 
     else 
     { 
      printf("\n\tNot prime:%d\n",j); 
     } 
    } 
}