有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java试图计算Fibonacci非模m的Pisano周期,其中m是一个数字

代码-:

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) 个答案

  1. # 1 楼答案

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

  2. # 2 楼答案

    你对斐波那契级数的计算是错误的。您试图建立三个连续的Fibonnacci编号,但设置

    second_no = first_no;
    

    这是错误的。您可能应该打印出生成的斐波那契数列,以了解它是否正确。此外,while循环的构造过于复杂(使用标志或使用中断,如果目标是中断,则使用for循环来管理计数器)