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作为输入,把周期作为输出
我得到了一些正确的答案和一些错误的答案。正在等待有关此代码的帮助以计算周期
# 1 楼答案
您应该声明变量,以避免否定答案,它是由于整数溢出而发生的
# 2 楼答案
你对斐波那契级数的计算是错误的。您试图建立三个连续的Fibonnacci编号,但设置
这是错误的。您可能应该打印出生成的斐波那契数列,以了解它是否正确。此外,while循环的构造过于复杂(使用标志或使用中断,如果目标是中断,则使用for循环来管理计数器)