000
13.11.2005, 21:05 Uhr
Peachie
|
Hallo.
Ich finde einfach nicht den Fehler in meinem Programm. Und zwar sollte ich eine rekursive Funktion primfaktoren(int n) schreiben, die alle Primfaktoren der Zahl m ausgibt. Ich hab nun folgendes geschrieben:
C++: |
#include <iostream> #include "cond.h" using namespace std;
int drucke (int x);
int primfaktoren (int n, int t) { return cond(n == 2, 2, cond(t < n, cond(n % t == 0, primfaktoren(n/t, t) && drucke(t), primfaktoren(n, t+1)), drucke(n))); }
int drucke (int x) { cout << x << " "; }
int main () { cout << primfaktoren(10, 2) << endl; system ("pause"); }
|
cond.h hat die Form: #define cond(a,b,c) (a ? b : c) a entspricht if, b then und c else.
Etwas anderes als diese Funktion dürfen wir nicht verwenden (keine Schleifen etc). Mein Problem ist nun, dass er mir zwar die Primzahlen anzeigt, aber teilweise noch die 1 mit auftritt. Ich finde einfach nicht heraus wieso und wie ich das ändern kann. Kann mir vielleicht jemand helfen?? Danke im Voraus.
mod edit: Benutze die CPP Tags selber! Dieser Post wurde am 13.11.2005 um 22:48 Uhr von Pablo editiert. |