URL: https://www.overclockers.at/coding-stuff/primzahlen_berechnen_104423/page_2 - zur Vollversion wechseln!
es soll keine int function sein sondern void!
statt dem break in zeile 6 sollte return; stehen.
Tschuldigung für diese Fehler!
das sieb des eratosthenes wird dir sicher mehr helfen als die lösung der aufgabe...
nur dass das halt bei den höheren zahlen nicht mehr so die optimale lösung isZitat von Smoldidas sieb des eratosthenes wird dir sicher mehr helfen als die lösung der aufgabe...

eh
bis 1000 gehts aber ohne probleme
und rekursion ist nie die optimale lösung (performancemässig) 
bitte erläutere doch mal, wieso du zu dieser meinung kommst...Zitat von Smoldi...und rekursion ist nie die optimale lösung (performancemässig)
Das Problem bei Rekursionen ist, daß sie bei steigender Komplexität Speichermäßig explodieren. Es gibt zwar keine Variablen, aber der Stack wird zugemüllt (ist ja auch ein Speicher) und irgendwann gibts halt da schon mal nen overflow 
Es gibt ganz wenige Ausnahemen, bei denen rekursive Lösungen mit GUTEN Iterativen gleichziehen. Besser sind sie von der Performance her praktisch nie, wenn sich schon mal jemand ne Iterative Lösung ausgedacht hat (und das ist bei Primzahlen ja der Fall
).
Es kann manchmal sehr sehr schwer sein von einer einfach hinzuschreibenden Rekursion auf eine Iteration zu kommen, aber es ist bewiesen, daß jedes Problem iterativ zu lösen ist.
also wozu man hier eine rekursion braucht ist mir erlichgesagt nicht klar, das würd auch mit normalen schleifen gehen!
hier braucht die rekursion nur viel speicher und bringt nix!
@smoldi
das sieb ist cool!
wäre programmiertechnisch nicht wirklich komplizierter, aber ich vermute das es schneller ist!
wieso nimmst du nicht fresserettich's code?
ich hab den (ich bin der "freund" von dem er spricht) mindestens 100 mal durchgetestet ... 
Wenn eine Rekursion gefordert ist dürfte es sich um eines dieser Anfängerbeispiele handeln bei denen ein spezieller Weg gefordert ist (nehme ich mal an) => würde auch dafürsprechen, denn welcher versierte Coder fragt nach sowas ...
Zitat#include <stdio.h>
int main(void)
{
int year;
int a, b;
for (year = 2001; year < 2050; year += 2)
{
a = 3;
while (a <= (b = year/a))
{
if (a*b == year)
{
printf("%d = %d * %d\n", year, a, b);
a = year;
break;
}
a += 2;
}
if (a != year)
printf ("%d is prime.\n", year);
}
return 0;
}
hmm... hat aber nichts mit rekursion zu tun oder?
Zitat von mg_shadowalso wozu man hier eine rekursion braucht ist mir erlichgesagt nicht klar
wir rätseln ja auch schon die ganze zeit, warum gerade rekursiv primzahlen berechnen,... keine angabe die die vorzüge einer rekursion deutlich macht.
Ich habs eh schon weiter oben geschrieben, das roch sowas nach Vorgabe ...
Also zum Thema Rekursion:
Rekursion ist wunderbar für Definitionen, aber sie ist Speicherplatzmäßig nicht optimal. Ausserdem wird von guten Compilern eine Rekursion in eine Iteration übergeleitet.
Ein Beispiel in der Rekursion katastrophale Auswirkungen auf die Laufzeit hat:
Berechnung der Fibonacci Zahlen mittels der Funktion fib()
fib(6)=fib(5)+fib(4)
=fib(4)+fib(3)+fib(3)+fib(2)
=fib(3)+fib(2)+fib(2)+fib(1)+fib(2)+fib(1)+1
....
In diesem Beispiel wird fib(3) schon 3 mal berechnet.
Also, bei Rekursionen aufpassen.
overclockers.at v4.thecommunity
© all rights reserved by overclockers.at 2000-2026