#include /*---------------------------------------------------------------------------*/ /* Funktion bestimmt rekursiv die Primfaktoren des Wertes(wert) */ /*---------------------------------------------------------------------------*/ int PZ(unsigned long wert,unsigned char *Feld,unsigned char *Maske) { unsigned long i; if(wert>1) { /* wert laesst keinen Rest bei Division durch 2 */ if(!(wert%2)) { wert=wert/2; printf("*2"); wert=PZ(wert,Feld,Maske); } else { /* Von 3 bis zur eingegebenen Zahl wird geprueft, ob kein Eintrag an der */ /* Stelle i ist und ob der wert durch das derzeitige i (Primzahl)teilbar ist.*/ for(i=3;i<=wert;i=(i+2)) { if((!(Feld[i/8]&Maske[i%8]))&&(!(wert%i))) { printf("*%ld",i); wert=wert/i; wert=PZ(wert,Feld,Maske); } } } } return wert; } /*---------------------------------------------------------------------------*/ /* Funktion ist der Funktionskopf fuer die Ausgabe der Primfaktoren */ /*---------------------------------------------------------------------------*/ int ausgabe(unsigned long wert,unsigned char *Feld,unsigned char *Maske) { int i; printf("\n\tPrimfaktorzerlegung : 1"); /* Falls Wert kleiner als 3 ist Ausgabe */ if(wert<3) printf("*%ld",wert); /* Sonst Primfaktorzerlegungen */ else i=PZ(wert,Feld,Maske); printf(" = %ld",wert); return i; }