#include #include unsigned long int prim(unsigned long int eingabe) { unsigned long int zaehler=5; int adder=-1; if(eingabe % 2 == 0) return 2; if(eingabe % 3 == 0) return 3; while((eingabe % zaehler != 0) && (zaehler*zaehler<=eingabe)) { zaehler+=3+adder; adder=-adder; } if(zaehler*zaehler>eingabe) return eingabe; else return zaehler; } int main(int argc, char *argv[]) { unsigned long int eingabe1=0,eingabe2=0,zaehler,primzahl,aktuell,counter=0; if(argc==2 || argc==3) { eingabe1=atoi(argv[1]); if(argc==2) eingabe2=eingabe1; else eingabe2=atoi(argv[2]); } if((eingabe1==0)||(eingabe2==0)) { printf("\n\tAufruf: primtest \"vonZahl\" \"bisZahl\"\n\n"); } else { printf("\nPrimzahltest\n"); if(eingabe1==1) { printf("\n1 ist keine Primzahl."); eingabe1 = 2; } for(zaehler=eingabe1;zaehler<=eingabe2;zaehler++) { aktuell = zaehler; primzahl = prim(aktuell); if(primzahl==aktuell) { printf("\n\n%d-----------PRIMZAHL-----------%d\n",aktuell,aktuell); counter++; } else { printf("\n%d = %d",aktuell,primzahl); while(primzahl*primzahl<=aktuell) { aktuell /= primzahl; primzahl = prim(aktuell); printf("*%d",primzahl); } } } printf("\n\n%d Primzahlen gefunden!\n\n",counter); } return 0; }