Programm für Fibonacci-Primzahl Fehlermeldung
-
Ein Programm, welches die Fibonacci-Primzahlen von 0 bis Eingabe m ausgibt, ist hier gesucht. Nun darf man nur <iostream> verwenden und auch nur while, if, for Schleifen.
Was ist an dem Programm falsch und was müsste ich verbessern? (Das Programm sagt nach der Eingabe des Wertes "program terminated by signal: killed")
#include<iostream> int main () { unsigned int a=0; //Erste Fibonaccizahl, Start 0 unsigned int b=1; //Zweite Fibonaccizahl, Start 1 unsigned int m; // Eingabewert bool s; //Entscheidungshilfe ob Fib.-Zahl Primzahl ist std::cout << "Your number: "; //Eingabewert des Benutzers std::cin >> m; //wird in m abgespeichert for(unsigned i=1; a<=m; i++) //Schleife für die Fibonacci-Reihe { s=true; //Boolwert wird auf wahr gesetzt for(unsigned k=2; k<=a/2; k++) //Überprüfung ob a eine Primzahl ist. { if(a%k==0) //Zahl ist durch eine Zahl k <= a/2 teilbar { s=false; //s nimmt den Wert falsch an, es handelt sich um keine Primzahl } if (s==true) //a ist nicht teilbar mit einem Rest 0, es handelt sich um eine Primzahl { std::cout << a <<std::endl; //Primzahl wird angegeben } b=a+b; //Fibonacciwert 1 a=b-a; //Fibonacciwert 2 } } return 0; }
Danke
-
Was soll in der inneren Schleife passieren?
Was passiert tatsächlich?
-
Am Besten teilst du dein Problem in zwei Funktionen auf, damit wird´s übersichtlicher. Die erste Funktion berechnet die Fibonacci Zahl, die zweite prüft, ob eine Zahl prim ist.
-
@DocShoe Ja genau so hab ich das auch gemacht. Hilft extremst
-
@mrcoder sagte in Programm für Fibonacci-Primzahl Fehlermeldung:
@DocShoe Ja genau so hab ich das auch gemacht. Hilft extremst
Du kannst das geplapper in jedem Thread auch unterlassen ...
-
@DocShoe Man darf das Problem nur mitels den if for while schleifen lösen. Weiss nicht ob das mit den Funktionen zulässig wäre
-
@manni66 es soll überprüft werden ob die fibonaccizahl prim ist oder nicht. Dazu betrachte ich alle zahlen von k=2 bis a/2
Ist das nicht der Fall, also a%k ==0, ist s== false und die Zahl wird nicht mehr angeschaut und wir gehen zurück zur ersten Schleife und schauen es mit der näcjsten Fib. Zahl a
Ist es s==true wird a ausgegeben
Finde den Fehler nicht
-
Rück´ deinen Code mal vernünftig ein, dann springt´s dich an
-
ich würde das auch einrücken so kannst du es viel besser erkennen
-
@mathelatte
Noch ein Verbesserungsvorschlag:
Du kannst die innere Schleife mitbreak
abbrechen, sobald du festgestellt hast, dass die Zahl nicht prim ist. Für den Beweis, das eine Zahl nicht prim ist, reicht ein Beweis, du brauchst da nicht alle@mrcoder
Wahnsinn, so schnell hat´s noch niemand auf meine Ignore-Liste geschafft.
-
kannst du mir bitte sagen was eine ignore liste ist. bin noch ziemlich neu hier
-
@mrcoder Die Ignore-Liste ist das wo ich dich auch irgendwann mal draufsetzen werde wenn du weiterhin in vielen Threads sinnlose Beiträge postest. Der Effekt ist dass ich dann keine Beiträge von dir mehr sehe.