Stackoverflow的新功能所以请指出我可以做的任何事情来提高我的问题的质量.
所以我的代码做(或者说希望做)什么是计算巨大的斐波那契数模相当庞大米.为了使算法更有效,我使用了pisano时期.本质上,我计算m的pisano周期,然后使用以下关系更容易计算余数:
的所述的剩余部分Ñ个Fibonacci数(模米)等于所述的剩余ķ个Fibonacci数(模米),使得ķ = ñ%p,其中p是的皮萨诺期间米.
为了计算pisano时期,我使用以下属性:
如果当前的Fib%米 = 0,并且所有的FIB的总和直到现在%米 = 0,则当前的Fib的索引为的皮萨诺期间米.(注意索引必须大于0)
然而,我在这方面遇到了一个问题:为了计算pisano时期,我必须计算连续的Fibonacci数.当必须计算的斐波纳契数的数量变得非常大时,例如100 000,就会出现问题.然后数据类型长溢出.
据我所知,任何计算皮萨诺时期的努力都需要计算斐波那契,所以唯一的解决方案似乎是用其他东西替换长期.如果有人对这个替代品有什么建议,我将不胜感激.
import java.util.*;
public class FibHuge {
public static void main (String [] args) {
Scanner in = new Scanner (System.in);
long num = in.nextLong ();
long mod = in.nextLong();
System.out.println ( getMod(num, mod));
}
private static int getMod (long num, …Run Code Online (Sandbox Code Playgroud)