代码 - :
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作为输入并将周期作为输出。
对于某些人,我得到了正确的答案。等待有关此代码的一些帮助以计算期间
答案 0 :(得分:0)
您对Fibonacci系列的计算是错误的。您正在尝试建立三个连续的Fibonnacci数字,但设置
second_no = first_no;
错了。您应该打印出您生成的Fibonacci系列,以了解它是否正确。此外,你的while循环的构造过于复杂(使用标志或使用中断,如果你想要休息,使用for循环代替管理计数器。)
答案 1 :(得分:0)
你应该声明变量,以避免否定答案,它是由于整数溢出而发生的。