feat: add fibonacci sequence
This commit is contained in:
@@ -8,6 +8,7 @@
|
|||||||
| ChudnovskyAlgorithm | 楚德诺夫斯基算法 | [chudnovsky-algorithm](https://hatter.ink/static/resource/muboard/?id=chudnovsky-algorithm&version=latest&full=1) |
|
| ChudnovskyAlgorithm | 楚德诺夫斯基算法 | [chudnovsky-algorithm](https://hatter.ink/static/resource/muboard/?id=chudnovsky-algorithm&version=latest&full=1) |
|
||||||
| EulerNumber | 欧拉数 | [eulers-number](https://hatter.ink/static/resource/muboard/?id=eulers-number&version=latest&full=1) |
|
| EulerNumber | 欧拉数 | [eulers-number](https://hatter.ink/static/resource/muboard/?id=eulers-number&version=latest&full=1) |
|
||||||
| EulerTheorem | 欧拉定理 | [euler-theorem](https://hatter.ink/static/resource/muboard/?id=euler-theorem&version=latest&full=1) |
|
| EulerTheorem | 欧拉定理 | [euler-theorem](https://hatter.ink/static/resource/muboard/?id=euler-theorem&version=latest&full=1) |
|
||||||
|
| FibonacciSequence | 斐波那契数列 | [fibonacci-sequence](https://hatter.ink/static/resource/muboard/?id=fibonacci-sequence&version=latest&full=1) |
|
||||||
| LeibnizFormula | $\pi$ 的莱布尼茨公式 | [leibniz-formula](https://hatter.ink/static/resource/muboard/?id=leibniz-formula&version=1) |
|
| LeibnizFormula | $\pi$ 的莱布尼茨公式 | [leibniz-formula](https://hatter.ink/static/resource/muboard/?id=leibniz-formula&version=1) |
|
||||||
| ModularInv | 求乘法逆元【扩展欧几里得法】 | - |
|
| ModularInv | 求乘法逆元【扩展欧几里得法】 | - |
|
||||||
| Prime | 试除法 | - |
|
| Prime | 试除法 | - |
|
||||||
|
|||||||
35
src/main/java/me/hatter/math/FibonacciSequence.java
Normal file
35
src/main/java/me/hatter/math/FibonacciSequence.java
Normal file
@@ -0,0 +1,35 @@
|
|||||||
|
package me.hatter.math;
|
||||||
|
|
||||||
|
import me.hatter.math.util.MathUtil;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
import java.math.BigInteger;
|
||||||
|
import java.math.RoundingMode;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
public class FibonacciSequence {
|
||||||
|
static final BigDecimal SQRT5 = MathUtil.sqrt(BigDecimal.valueOf(5), 100);
|
||||||
|
|
||||||
|
public static void main(String[] args) {
|
||||||
|
List<BigInteger> nums = new ArrayList<>();
|
||||||
|
List<BigInteger> num2s = new ArrayList<>();
|
||||||
|
for (int i = 0; i < 20; i++) {
|
||||||
|
nums.add(fn(i));
|
||||||
|
num2s.add(fn2(i));
|
||||||
|
}
|
||||||
|
System.out.println(nums);
|
||||||
|
System.out.println(num2s);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static BigInteger fn(int n) {
|
||||||
|
BigDecimal a = BigDecimal.ONE.add(SQRT5).divide(BigDecimal.valueOf(2), 100, RoundingMode.HALF_UP);
|
||||||
|
BigDecimal b = BigDecimal.ONE.subtract(SQRT5).divide(BigDecimal.valueOf(2), 100, RoundingMode.HALF_UP);
|
||||||
|
return a.pow(n).subtract(b.pow(n)).divide(SQRT5, 0, RoundingMode.HALF_UP).toBigInteger();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static BigInteger fn2(int n) {
|
||||||
|
BigDecimal a = BigDecimal.ONE.add(SQRT5).divide(BigDecimal.valueOf(2), 100, RoundingMode.HALF_UP);
|
||||||
|
return a.pow(n).divide(SQRT5, 0, RoundingMode.HALF_UP).toBigInteger();
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user