我正在使用Fibonacci序列根据此页面生成一些毕达哥拉斯三元组(3,4,5等):http://en.wikipedia.org/wiki/Formulas_for_generating_Pythagorean_triples从“广义Fibonacci序列”开始。
public static int fib(int n) {
if(n == 0) return 0;
if(n <= 2) return 1;
int i = 1;
int temp = 0;
while(n != 1) {
i += temp;
temp = i - temp;
n--;
}
return i;
}
public static void main(String[] args) {
int a = 4; //a(3)
int b = 3; //b(3)
int c = 5; //c(3)
for(int n = 4; n < 10; n++) {
System.out.println(a + "^2 + " + b + "^2 = " + c + "^2");
a = a + b + c;
b = fib((2 * n) - 1) - b;
c = fib(2 * n);
}
}
但是,我的程序给出的输出并不准确:
4^2 + 3^2 = 5^2
12^2 + 10^2 = 21^2
43^2 + 24^2 = 55^2
122^2 + 65^2 = 144^2
331^2 + 168^2 = 377^2
876^2 + 442^2 = 987^2
可能导致此问题的原因是什么?我被维基百科欺骗了吗?
答案 0 :(得分:3)
@MarkDickinson指出公式需要F(1)= 0和F(2)= 1,这与广泛使用的公式不同,其中F(1)= 1且F(2)= 1。解决了我的问题!