2017-01-03 8 views
-7

Ich möchte Primzahlen zwischen 1 bis 100 drucken, ich schreibe meinen Code wie folgt, aber wenn ich es ausführen, beginnt es 3,7,11,17 drucken ... .91 Warum nicht der Code 2 drucken? Bitte helfen Sie mir FreundePrimzahlen zwischen 1 bis 100 in C Programmiersprache

#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

weil '2% 2 == 0 ', yo muß, daß asume,‚1 und 2 'sind Primzahlen und setzen sich dort fort – Netwave

+0

Wie und wo soll ich meinen Code ändern? – user7369637

+0

gibt es viele Optionen, aber ich denke, dass nur 'printf (" 2 \ n ")' vor den Schleifen zu tun .... – Netwave

Antwort

3

Die Bedingung i==j+1 für i==2 nicht wahr sein. Dies kann durch ein paar Änderungen an der inneren Schleife festgelegt werden:

#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

Vielen Dank ... du hast mein Problem gelöst, Aber du, wenn du bitte deinen Code erklärst, schreibe Kommentare mit dem Code, warum wir die 2. Schleife verwenden und die wenn sonst Bedingung und die Break-Anweisungen, werde ich wirklich dankbar sein Sie – user7369637

+4

Sie möchten, dass ME Ihren Code dokumentieren? (Die Struktur des Codes ist dieselbe, ich habe lediglich einen kleinen Fehler behoben.) Darum geht es in StackOverflow nicht. –

+0

Es war nur eine Anfrage ... Anyways Vielen Dank so liebe – 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); 
     } 
    } 
}