java筛选法找出2-100的素数 (筛选n以内的素数c语言编程)

用筛选法求1到999的素数的

编程找出n以内的所有素数c语言,c语言求素数解题思路

#include <stdio.h>

int main() {

int prime[1000] = {0}; // 初始化素数数组

int i, j;

for (i = 2; i <= 999; i++) {

if (prime[i] == 0) { // 如果当前数是素数

for (j = i * 2; j <= 999; j += i) {

prime[j] = 1; // 将当前数的倍数标记为合数

}

}

}

printf("1到999的素数:\n");

for (i = 2; i <= 999; i++) {

if (prime[i] == 0) {

printf("%d ", i); // 输出素数

}

}

printf("\n");

return 0;

}

筛选法的思路是从2开始,将所有2的倍数标记为合数,然后再找到下一个未标记的数(即3),将所有3的倍数标记为合数,以此类推,直到找到所有小于等于999的素数。在代码中,使用一个长度为1000的数组 prime 来标记每个数是否是素数。如果 prime[i] 为0,则表示i是素数;如果 prime[i] 为1,则表示i是合数。

筛选法的好处是可以快速地找出一定范围内的所有素数,算法的时间复杂度为O(nloglogn),其中n为范围的大小。相比于*力暴**枚举法,筛选法的时间复杂度更小,可以提高算法的效率。