public class KthFibonaciPrime {
/**
* 求Fibonacci数列中第k个与前面所有数互质的数(除前面两个数 1,1 )
* 假设k=1时,2为所求
*/
public static void main(String[] args) {
KthFibonaciPrime k=new KthFibonaciPrime();
System.out.println(k.getKthRelativelyPrime(5));
}
/*
* 设fi为Fibonacci数列的第i项
* 下面这个方法的问题在于:判断fi是否符合条件时,将fi与前面的i-1个Fibonacci数比较,要分别求出f3,f4,...f(i-1)
* 存在重复计算的问题
* 是否可以将Fibonacci数列提前算好,并存储在一个数组中?
*/
public int getKthRelativelyPrime(int k){
int count=0;
int i,j;
for(i=3;;i++){
int fi=getFibonaci(i);//判断fi是否与前面的所有Fibonac数互质
for(j=3;j<i;j++){
int fj=getFibonaci(j);
if(!relativelyPrime(fi,fj)){
break;//继续判断下一个fi是否符合
}
}
if(j==i)count++;
if(count==k){
return fi;
}
}
}
/*
*get Nth Fibonaci number
*更合理的方法应该是利用矩阵
*/
public int getFibonaci(int n){
if(n==1||n==2){
return 1;
}else{
int n1=1,n2=1;
for(int i=3;i<=n;i++){
int tmp=n2;
n2=n1+n2;
n1=tmp;
}
return n2;
}
}
public boolean relativelyPrime(int x,int y){
return maxFactor(x,y)==1;
}
//最大公约数 a greatest common denominator
public int maxFactor(int x,int y){
if(x<y){
int tmp=x;
x=y;
y=tmp;
}
if(x%y==0){
return y;
}
else{
return maxFactor(y,x%y);
}
}
}
分享到:
相关推荐
对于n大于1的情况,我们使用两个变量`fib`和`prevFib`分别存储当前斐波那契数和前一个斐波那契数,通过循环计算出第n个数。 在Java开发工程师的笔试中,斐波那契数列是一个常见的题目,因为它可以考察候选人的逻辑...
在这段代码中,我们使用了三个变量`a`、`b`和`c`来分别存储Fibonacci数列中的前两个数和当前数。通过循环,逐步更新这三个变量的值,直到计算出第`n`个数为止。 #### 3. 主程序示例 接下来,我们将展示如何使用上面...
斐波那契数列的JAVA解法 斐波那契数列是一种特殊的整数序列,用于描述生物体的生长 RULE 及其他领域的变化规律。该序列以意大利数学家 Leonardo Fibonacci 的名字命名,故称为斐波那契数列。该序列的特点是每个数字...
C语言程序设计-用函数求fibonacci数列前n项的和;说明:fibonacci数列为数列的第一项值为1,第二项值也为1,从第三项开始,每一项均为其前面相邻两项的和;例如:当n=28时,运行结果:832039.c
【问题描述】编写函数f,功能是用递归的方法求斐波那契数列的第n项,函数原型为 int f(int n),在主函数中输入一个正整数n,调用函数f求出斐波那契数列的第n项,并在主函数中输出。 斐波那契数列:1,1,2,3,5,8,13,...
这个数列的第一个数是1,第二个数也是1,然后每个数都是前两个数的和。 2. Fibonacci数列的性质 Fibonacci数列有很多有趣的性质。例如,它是一个递推关系的数列,每个数都是前两个数的和。它也满足一个非常简单的...
斐波那契数列指标在技术分析中的应用 本文档介绍了一个基于斐波那契数列的指标,用于股票市场的技术分析。该指标结合了指数移动平均线(EMA)和斐波那契数列,旨在帮助投资者更好地分析和预测股票市场的走势。 ...
- 斐波那契数列中每项的和等于前后两项的乘积加一,即F(n) = F(n-1) * F(n+1) + 1。 - 斐波那契数列的偶数项可以被2整除,奇数项除了F(1)外都是奇数。 - 斐波那契数列的第n项可以表示为黄金分割比例φ的幂次形式...
Fibonacci数列定义如下:第1,第2个数均为1,从第3个数开始,该数是其前面两个数之和。Fibonacci数列为:1,1,2,3,5,8,13,… 。编写递归函数,求Fibonacci数列的第n个数,并编写主函数,调用该递归函数,输出...
Java 中的 Fibonacci 数列的定义是从 0 开始的,第一个 Fibonacci 数是 0,第二个是 1,之后每个数都是前两个数的和。例如,前五个 Fibonacci 数是 0、1、1、2、3。 在 Java 中,使用非递归的方法来打印 Fibonacci ...
面试题10- I. 斐波那契数列写一个函数,输入 n ,求斐波那契(Fibonacci)数列的第 n 项。斐波那契数列的定义如下:斐波那契数列由 0 和 1 开
这个压缩包包含两个C++源程序,分别使用递归法和非递归法来实现斐波那契数列的计算。接下来,我们将详细讨论这两个方法以及斐波那契数列的相关知识点。 斐波那契数列定义为:F(0) = 0,F(1) = 1,对于n > 1,F(n) =...
在数学上它以递归的方式进行定义,指这样的一个数列:0、1、1、2、3、5、8、13、21、34、55、89、144……,即前两个数为分别为0和1,从第3项开始,每项的值都等于其前两项之和。斐波那契数列Fib(n)用公式表示为: ...
程序中使用了两个变量f1和f2分别存储数列中的前两个数,通过循环逐步计算出后续的数。该程序展示了基本的循环结构和条件判断的使用。 【程序2】是一个判断素数的程序。素数是指只能被1和它本身整除的大于1的自然数...
例如,我们可以创建一个大小为K的数组dp,其中dp[i]表示第i阶斐波那契数列的第n个数。初始时,dp[0]到dp[K-1]分别设置为斐波那契数列的前K个值(0, 1, ...)。然后,通过迭代更新dp数组中的每个元素,使其成为前K个...
java基础面试题斐波那契数列本资源系百度网盘分享地址
【JAVA经典算法40题面试题案例】 在Java面试中,算法题是考察候选人编程能力的重要环节。这里我们探讨三个常见的算法问题及其解决方案。 **问题1:斐波那契数列(Fibonacci Sequence)** 斐波那契数列是一个序列...
在迭代过程中,我们只需要维护两个变量,就可以轻松地计算出任意位置的Fibonacci数。 ### C语言实现Fibonacci数列 在给定的代码片段中,作者使用C语言实现了求解Fibonacci数列的前20项的功能。下面我们将详细解读...
用java语言写的求求fibonacci数列第1000项的值,用的递归算法.是初学java练习递归的好素材.
利用递归数列求解著名的Fibonacci数列的各项,用户可自定义输入要求的第n项,输入后即可求出从0到n每一项Fibonacci的值。