质数 & 斐波那契数列
质数
质数(primer number)也称素数
指在大于1的自然数中,除了1和它本身以外不再有其他因数的自然数。
基本求法有试除法和筛法
试除法
最基本的试除法,将该数除以 2 至 n-1 之间的每一个数,如果能整除其中任何一个数,则该数不是质数。
需要进行 n-2 次判断,即时间复杂度为 O(n) ,效率低。
代码实现:
public static boolean isPrimeNum(int n){
for (int i = 2; i <= n-1; i++) {
if (n % i == 0)
return false;
}
return true;
//返回true表示此数是质数,false反之
}
上述方法效率太低,所以有了改进的试除法:
数学知识,对于小于n的整数x,如果n不能整除x,则n也不能整除n/x。
所以只需要试除从 2 到 n \sqrt{n} n 之间的每一个数就行。
需判断为 n − 1 \sqrt{n}-1 n−1 次,即时间复杂度为 O( n \sqrt{n} n) ,效率明显提升。
代码实现:
public static boolean