使用筛法(Sieve of Eratosthenes)可以高效地找出一定范围内的所有素数(质数)。筛法的基本思想是从小到大遍历数字,并标记掉其所有的倍数,最终剩下的未被标记的数字即为素数。以下是用 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://www.huaxiatt.com/post/5946.html
- 转载请注明: admin 于 红色航投 发表