斐波那契数列最大公约数
题目大意
解题思路
这个题F(2020)和F(520)结果太大,
因此,我们用bigInteger来做。
具体求斐波那契数列的方法我们都很熟悉,不再展开赘述,直接看下述代码。
这是求最大公约数的欧几里得公式:
private static BigInteger gcd(BigInteger a, BigInteger b) {
BigInteger x = new BigInteger("0");
return b.equals(x) ? a:gcd(b, a.mod(b));
}
完整代码
package 蓝桥杯环境;
import java.io.BufferedInputStream;
import java.math.BigInteger;
import java.text.ParseException;
import java.util.Scanner;
public class Main {
public static void main(String[] args) throws ParseException {
Scanner scanner = new Scanner(new BufferedInputStream(System.in));
//int a = 1;
BigInteger a = new BigInteger("1");
//int b = 1;
BigInteger b = new BigInteger("1");
BigInteger[] c= new BigInteger[2021];
c[1] = a;
c[2] = b;
for (int i = 3; i <= 2020; i++) {
c[i] = c[i-1].add(c[i-2]);
}
System.out.println(c[2020]);
System.out.println(c[520]);
BigInteger d = gcd(c[2020], c[520]);
System.out.println(d);
}
private static BigInteger gcd(BigInteger a, BigInteger b) {
BigInteger x = new BigInteger("0");
return b.equals(x) ? a:gcd(b, a.mod(b));
}
}
结果:6765