在C语言中,计算素数的方法主要有以下几种:
试除法
从2开始,逐个检查每个数是否能整除目标数,直到检查到目标数的平方根为止。如果能被整除,则该数不是素数;否则,它是素数。
筛选法
生成一个包含2到目标数的所有数的列表,然后从2开始,将所有2的倍数标记为非素数,再取出下一个未标记的数并重复此过程,直到遍历完所有数。最终剩下的未被标记的数即为素数。
埃拉托斯特尼筛法
类似于筛选法,但效率更高。从2开始,将所有2的倍数标记为非素数,然后找到下一个未被标记的数(即3),将其标记为素数,并将其所有的倍数标记为非素数,重复此过程,直到遍历完所有数。
欧拉筛法
另一种高效的筛选法,通过维护一个布尔数组来标记素数和非素数,从而减少重复标记的操作。
示例代码
```c
include include int main() { int number, i; for (number = 100; number < 201; number++) { for (i = 2; i <= sqrt(number); i++) { if (number % i == 0) { break; } } if (number % i != 0) { printf("%d\n", number); } } return 0; } ``` 优化建议 减少循环次数:只需要检查到目标数的平方根即可,因为如果一个数有大于其平方根的因子,那么它一定有小于其平方根的因子。 跳过偶数:除了2以外,所有偶数都不是素数,因为它们至少可以被2整除。 通过这些方法,可以有效地计算出指定范围内的所有素数。