Primzahlenberechnung



  • Hallo.. ich wollte ein programm schreiben, was mir primzahlen berechnet.. ich habe mir das so überlegt:

    n= primzahl die ich prüfen will
    i==0
    solange i<n mache {
    n/i .. wenn das ergebnis..

    .. eine ganze zahl ist , dann schreibe, dass es keine primzahl ist und verlasse die schleife
    .. eine fließkommazahl ist , dann erhöhe i um 1

    }

    mein prob ist, wie kann ich C sagen, ob es sich um eine ganze / natürliche zahl handelt? und wie verlasse ich eine while schleife .. mit break geht das ja nur in switch soweit ich weiss ^^



  • Deine Alternative in der Schleife kannst du auch so formulieren:

    solange i<n dann {

    wenn n/i ohne Rest teilbar, dann keine primzahl

    }

    sonst Primzahl

    #include <stdio.h>
    
    int main()
    {
    	int i;
    	int n = 101;
    
    	for(i=2; i<n; i++)
    		if ( n % i == 0 ) {
    			printf("%d ist keine Primzahl\n", n);
    			return 0;
    		}
    
    	printf("%d ist eine Primzahl\n", n);	
    
    return 0;
    }
    

    Um zu sehen ob es sich um eine ganze Zahl handelt kannst du schreiben:

    float n = 2.1;
    
    	if ( n - (int)n == 0 )
    		printf("Ganze Zahl\n");
    	else
    		printf("Gebrochene Zahl\n");
    

    Mit deiner und der o. g. Methode nach Primzahlen zu suchen ist aber nicht sehr
    effizient.
    Bessere sind hier nachzulesen: http://de.wikipedia.org/wiki/Primzahlentest#Bekannte_Primzahltest-Verfahren



  • und wie verlasse ich eine while schleife .. mit break geht das ja nur in switch soweit ich weiss ^^

    Mit break kannst du jede Schleife sofort verlassen.

    Bsp:

    int i = 0;
    while(1) {
      printf("%d\n",i++);
      if(i > 10) {
        break;
      }
    }
    
    int i;
    for(i = 0; i < 11; i++) {
      printf("%d\n",i);
      if(i > 5) {
        break;
      }
    }
    

Anmelden zum Antworten