2016-03-29 3 views
0

CODE -:Versuch Pisano Periode Für Fibonacci keinen Modulo-m zu berechnen, wobei m eine Zahl

import java.util.Scanner; 

public class Big 
{ 
    public static long m; 
    public static int ind; 
    public static long first_no,second_no; 
    public static boolean flag = false; 
    public static long fib_no; 

    public static int find_index(long mod_no) 
    { 
     int i = 1; 
     first_no= 0; 
     second_no= 1; 

     while(flag != true) 
     { 
      fib_no = first_no + second_no; 
      second_no = first_no; 
      first_no = fib_no; 

      if(fib_no%mod_no == 0) 
      { 
       if(((first_no%mod_no + second_no%mod_no)%mod_no) == 1) 
       { 
        ind = i; 
        flag = true; 
        System.out.println("i : " + i); 
        break; 
       } 
       else 
       { 
        i++; 
       }  
      } 
      else 
      { 
       i++; 
      } 
     } 

     return ind; 
    } 

    public static void main(String[] args) 
    { 
     int i=0; 
     Scanner num = new Scanner(System.in); 
     System.out.println("Enter Mod No : "); 
     m = num.nextLong(); 

     ind = find_index(m); 
     System.out.println(ind); 
    } 
} 

Hier i den m als Eingang genommen habe, wobei m die Zahl, mit der die Modul wird genommen. Ich nehme m als Eingabe und bekomme die Periode als Ausgabe.

Ich bekomme richtige Antworten für einige und falsche Antworten für einige. Warten auf einige Hilfe auf diesen Code zum Berechnen der Periode

+0

Erklären Sie, was Sie Testergebnisse –

+0

@JFMeier diesen Link sehen erreichen wollen und geben -: http://webspace.ship.edu/msrenault/fibonacci/fiblist.htm Auf diesem Link auf Eingabe der mod i das bekommen entsprechende Periode. Zum Beispiel, wenn ich Eingabe 10 gebe. Ich werde als 60 ausgegeben. –

Antwort

0

Ihre Berechnung der Fibonacci-Serie ist falsch. Sie versuchen, eine drei aufeinanderfolgende Fibonnacci-Nummern aufzubauen, aber die Einstellung

ist falsch. Sie sollten die Fibonacci-Serie, die Sie generieren, wahrscheinlich ausdrucken, um zu verstehen, ob sie korrekt ist. Darüber hinaus ist die Konstruktion Ihrer while-Schleife zu komplex (verwenden Sie entweder die Markierung oder verwenden Sie eine Pause, wenn Sie eine Pause anstreben, verwenden Sie stattdessen eine for-Schleife, um den Zähler zu verwalten).

+0

Ich sah durch Drucken der Fibonacci-Serie und ich bekomme einige Zahlen als negativ. Können Sie eine Methode angeben, damit diese Zahlen in Reichweite sind? Vor der if-Anweisung habe ich eine system.out.println (fib_no) -Anweisung hinzugefügt. Können Sie mir helfen, dieses Problem zu beheben, indem Sie die richtigen Zahlen drucken? –

+0

Sie können durch die Fibonacci-Sequenz iterieren, indem Sie zwei Variablen f1, f2 mit Startwerten 0,1, eine Hilfsvariable fnew und einen Iterationsschritt fNew = f1 + f2; f1 = f2; f2 = fNeu. –

+0

Es funktioniert immer noch nicht ... Anzeigen der negativen Werte –

0

Sie sollten Variable so lange deklarieren, um negative Antwort zu vermeiden, es tritt wegen Überlauf der Ganzzahl auf.

+0

Sie könnten präzisieren, welche Variable deklariert werden soll. –

Verwandte Themen