质数分析的简易教程可归纳为以下核心内容,结合权威信息源整理如下:
一、质数定义与性质
质数是大于1的自然数,仅能被1和自身整除。例如2、3、5等。
二、判断质数的常用方法
-
暴力枚举法
通过遍历2到n-1判断是否能被整除,时间复杂度为O(n)。适用于小数判断,但效率较低。
-
优化试除法
-
基本优化 :只需检查到√n,因为若n有因数,必然存在一对因数d和n/d,其中至少有一个≤√n。
-
进一步优化 :跳过偶数(除2外)和5的倍数,减少计算量。
-
-
筛法(埃拉托斯特尼筛法)
适用于生成大量质数,通过标记合数来筛选质数,时间复杂度为O(n log log n),但实现较复杂。
三、实用技巧
-
快速排除法 :
-
末尾为0、2、4、5、6、8的数非质数;
-
各位数字之和能被3整除的数非质数。
-
四、示例代码(C语言)
#include <stdio.h>
#include <math.h>
// 基础暴力枚举
int is_prime_basic(int n) {
if (n < 2) return 0;
for (int i = 2; i < n; i++) {
if (n % i == 0) return 0;
}
return 1;
}
// 优化试除法(√n优化)
int is_prime_optimized(int n) {
if (n < 2) return 0;
for (int i = 2; i <= sqrt(n); i++) {
if (n % i == 0) return 0;
}
return 1;
}
int main() {
int num;
printf("请输入一个数: ");
scanf("%d", &num);
if (is_prime_optimized(num)) {
printf("%d 是质数\n", num);
} else {
printf("%d 不是质数\n", num);
}
return 0;
}
五、注意事项
-
质数判断需注意边界条件(如n=1非质数);
-
大数判断建议使用筛法或更高级算法。