Primfaktorzerlegung
Vorführaufgabe 04 · C
- Datei: vorfuehraufgabe04.c
- Stand:
- Umfang: 71 Zeilen
#include <stdio.h>
#include <stdlib.h>
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;
}