菲波那契数的余数

描述:

菲波那契数大家可能都已经很熟悉了: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
 

样本输出:


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

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值