我试图找到一个给定的数目是否fibonocci或我使用ID 5*n^2+4 or 5*n^2-4 will be a perfect square
not.The逻辑.The代码如下逻辑失败的一个大数目寻找fibonocci数
import java.util.*;
import java.math.*;
public class Solution {
public static void main(String [] args){
Scanner input=new Scanner(System.in);
int number=input.nextInt();
int holder[]=new int[number];
for(int i=0;i<number;i++){
holder[i]=input.nextInt();
checkFib(holder[i]);
}
}
private static void checkFib(int i) {
// TODO Auto-generated method stub
long fivePlus=(long) (5*Math.pow(i, 2)+4);
long fiveMinus=(long)(5*Math.pow(i, 2)-4);
boolean check=checkSquare(fivePlus,fiveMinus);
if(check==true){
System.out.println("IsFibo");
}else{
System.out.println("IsNotFibo");
}
}
private static boolean checkSquare(long fivePlus, long fiveMinus) {
// TODO Auto-generated method stub
boolean ret1,ret2;
if(Math.sqrt(fivePlus)==Math.floor((Math.sqrt(fivePlus)))){
ret1=true;
}else{
ret1=false;
}
if(Math.sqrt(fiveMinus)==Math.floor((Math.sqrt(fiveMinus)))){
ret2=true;
}else{
ret2=false;
}
return (ret1||ret2);
}
}
输入格式将是 2 //对于两个测试用例 5 // 5和6代表测试数据 ps:即使关于使用BigInteger的答案是可观的,但我并不看大整数,因为我的测试数据在长的范围。
http://stackoverflow.com/questions/11878871/determine-是否-n-is-fibonacci-or-not-if-not-find-the-largest-fibonacci-numbe –
你能否提供一些价值观失败的例子? –
我真的没有看到问题......我试着用102334155和输出是“IsFibo”...你看到什么错误? –