Prime Number—— 定义、判定与经典算法
Homework to Blog:素数探秘 —— 定义、判定与经典算法
一、什么是素数?
素数(Prime Number),又称质数,是指在大于 1 的自然数中,除了 1 和它本身以外,不再有其他因数的数。
- 例如:2、3、5、7、11、13 ……
- 特别地,2 是最小的素数,也是唯一的偶素数。
- 1 既不是素数也不是合数。
二、为什么素数很重要?
素数被誉为“数字的原子”,它们是数论的基础,在密码学(如 RSA 加密)、哈希算法、随机数生成等领域都有广泛应用。理解素数,是进入计算机科学与数学深层领域的第一步。
三、如何判断一个数是否为素数?
1. 最朴素的试除法
对于一个数 ( n ),检查从 2 到 ( n-1 ) 是否存在能整除 ( n ) 的数。若存在,则 ( n ) 是合数;否则是素数。
时间复杂度:( O(n) ),对大的 ( n ) 效率极低。
2. 优化一:只需检查到 ( \sqrt{n} )
如果 ( n ) 有一个大于 ( \sqrt{n} ) 的因数,那么它必然有一个小于 ( \sqrt{n} ) 的因数。因此只需检查 2 到 ( \sqrt{n} ) 即可。
时间复杂度:( O(\sqrt{n}) )
3. 进一步优化:跳过偶数
除了 2 以外,所有偶数都不是素数。可以单独处理 2,然后只检查奇数。
四、Java 代码示例:判断素数
public class PrimeChecker {
public static boolean isPrime(int n) {
if (n <= 1) return false;
if (n == 2) return true;
if (n % 2 == 0) return false;
int limit = (int) Math.sqrt(n);
for (int i = 3; i <= limit; i += 2) {
if (n % i == 0) return false;
}
return true;
}
public static void main(String[] args) {
int[] testNumbers = {2, 3, 4, 17, 25, 97, 100};
for (int num : testNumbers) {
System.out.println(num + " 是素数? " + isPrime(num));
}
}
}


浙公网安备 33010602011771号