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; } }