使用筛法(Sieve of Eratosthenes)可以高效地找出一定范围内的所有素数(质数)。筛法的基本思想是从小到大遍历数字,并标记掉其所有的倍数,最终剩下的未被标记的数字即为素数。以下是用 C 语言实现筛法求素数的示例代码:
C++
#include <stdio.h>
#include <stdbool.h>
void sieveOfEratosthenes(int n) {
bool isPrime[n + 1];
// 初始化数组,假定所有数字都是素数
for (int i = 2; i <= n; i++) {
&2024新澳门跑狗图今晚管家婆网站 nbsp; isPrime[i] = true;
}
// 筛掉倍数
for (int i = 2; i * i <= n; i++) {
if (isPrime[i]) {
for (int j = i * i; j <= n; j += i) {
isPrime[j] = false;
}
}
}
// 打印素数
printf("在区间 [2, %d] 内的素数有:\\n", n);
for (int i = 2; i <= n; i++) {
if (isPrime[i]) {
printf("%d ", i);
}
}
printf("\\n");
}
int main() {
int limit;
printf("请输入一个正整数作为上限:");
scanf("%d", &limit);
sieveOfEratosthenes(limit);
return 0;
}
在这段代码中, 澳门彩246开彩结果94cc2025年新澳门天天开奖大全 函数使用数组 来标记每个数字是否为素数。首先将所有数字初始化为素数,然后从 2 开始遍历,如果当前数字是素数,则将其所有倍数标记为非素数。最后,遍历一遍数组,输出标记为素数的数字。
这段代码可以找出指定范围内的所有素数,运用了筛法的基本思想。请注意,筛法的时间复杂度是 O(n log log n),因此在实际应用中可以高效地找出大范围内的素数。
- 本文固定链接: https://huaxiatt.com/post/5946.html
- 转载请注明: admin 于 红色航投 发表