Hi
ich soll eine Funktion schreiben welche vom Hauptprogramm aufgerufen wird und eine Primfaktorzerlegung durchfüht. Die Primfaktorzerlegung habe ich bereits geschrieben und funktioniert auch, jetzt muss ich das vorhandene Programm in meine Funktion einbauen.
ABER! so dass es unabhängig von der main funktioniert. D.h. die main() wird leer abgegeben.
Das Problem ist dass sich meine Funktion eine variable merken muss ohne globale Variable, da die Funktion nach jeder Primzahl wieder "neu startet".
Hab das versucht mit einem Zähler der beim ersten aufruf hochzählt, aber es stimmt troztdem hinten und vorne nicht =( Ich hab hier mal mein Code:
Die int main ist durch den Prof zum testen vorgegeben
- -1 wenn die letzte mögliche Primzahl errechnet wurde solange bis neue zahl eingegeben wird
- -2 Im Fehlerffall (zahl<2)
Code:
#include <stdio.h>
#include <stdlib.h> //entfernen
int primfaktor(int);
int main()
{
int pf ;
while ((pf = primfaktor(12))>1)
printf("%d\n", pf) ;
while((pf = primfaktor(7))>1)
printf("%d\n", pf) ;
printf( "%d\n", primfaktor(1));
system("PAUSE"); //entfernen
return 0;
}
int primfaktor (int wert)
{ //int zahl=wert;
int n;
static int zahl;
while (n<1)
{
zahl=wert;
}
int erg, t, x;
if (zahl<2)
{
return -2;
}
else
{
t=2;
erg=zahl;
while (zahl>t)
{
x=erg%t;
while (x==0)
{
erg=erg/t;
x=erg%t;
return t;
}
while (x>0)
{
t=t+1;
x=erg%t;
if (t==zahl)
{
x=0;
}
}
}
}
return -1; //test falls Funktion mal durchläuft
}
So kommt nur -2 raus, aber eigentlich sollte return t; doch einen Teiler ausgeben!?!?
Hoffe mir kann jemand helfen