试图计算Pisano时期对于Fibonacci没有模数m,其中m是数字

时间:2016-03-29 10:23:32

标签: java

代码 - :

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);
    }
}

这里我把m作为输入,其中m是模数的取数。我将m作为输入并将周期作为输出。

对于某些人,我得到了正确的答案。等待有关此代码的一些帮助以计算期间

2 个答案:

答案 0 :(得分:0)

您对Fibonacci系列的计算是错误的。您正在尝试建立三个连续的Fibonnacci数字,但设置

second_no = first_no;

错了。您应该打印出您生成的Fibonacci系列,以了解它是否正确。此外,你的while循环的构造过于复杂(使用标志或使用中断,如果你想要休息,使用for循环代替管理计数器。)

答案 1 :(得分:0)

你应该声明变量,以避免否定答案,它是由于整数溢出而发生的。