1. 素数打印算法优化实战:从基础实现到性能突破
在编程初学者的算法练习中,素数判断是个经典问题。我见过太多人止步于基础实现,却忽略了算法优化背后的数学之美。今天我们就以打印100-200之间的素数为例,手把手带你体验四种不同实现方案的演进过程,理解每个优化步骤背后的原理。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 基础实现方案解析
2.1 方案一:标志位判断法
c复制#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main() {
int i = 0;
for (i = 100; i <= 200; i++) {
int flag = 1;
int j = 0;
for (j = 2; j <= i - 1; j++) {
if (i % j == 0) {
flag = 0;
break;
}
}
if (flag == 1)
printf("%d\n", i);
}
return 0;
}
这是最直观的实现方式,通过两层循环:
- 外层循环遍历100-200的所有整数
- 内层循环检查当前数是否能被2到自身减1的数整除
- 使用flag变量标记是否为素数(1表示素数,0表示非素数)
关键点:flag变量的引入使逻辑更清晰,避免了直接在内层循环中打印导致的重复输出问题。这种写法特别适合初学者理解素数判断的基本逻辑。
2.2 方案二:循环条件判断法
c复制#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main() {
int i = 0;
for (i = 100; i <= 200; i++) {
int j = 0;
for (j = 2; j <= i - 1; j++) {
if (i % j == 0) {
break;
}
