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 mit break 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.


Log in to reply