描述:
菲波那契数大家可能都已经很熟悉了:f(1)= 0; f(2)= 1; f(n)= f(n-1)+ f(n-2)n> 2.因此,当需要其除以某个数的余数时,不妨加一些处理就可以得到。
输入:
输入数据为一些整数对P,K,P(1 <P <5000),表示菲波那契数的序号,K(1 <= K <15)表示2的幂次方。遇到两个空格隔开的0时表示结束处理。
输出:
输出其第P个菲波那契数除以2的ķ次方的余数。
样本输入:
6 2
20 10
0 0
样本输出:
1
85
java的程序代码:
package SF;
import java.util.Scanner;
public class sy2_2 {
public static void main(String[] args) {
double s,P,K;
sy2_2 p = new sy2_2();
Scanner q = new Scanner(System.in);
System.out.println("请输入菲波那契数的序号P(1<P<5000)和表示2的幂次方的K值(1 <= K <15):\n");
P=q.nextInt();
K=q.nextInt();
while(P!=0||K!=0) {
s=p.fib(P)%Math.pow(2, K);
System.out.println((int)s);
P=q.nextInt();
K=q.nextInt();
}
}
double fib(double n)
{
if(n==2) return 1;
if (n <= 1) return 0;
return fib(n-1)+fib(n-2);
}
}
运行结果测试:
请输入菲波那契数的序号P(1<P<5000)和表示2的幂次方的K值(1 <= K <15):
6 2
1
20 10
85
0 0