当前位置: 代码迷 >> 综合 >> 打印小于N的所有素数(埃拉托色尼筛法)
  详细解决方案

打印小于N的所有素数(埃拉托色尼筛法)

热度:91   发布时间:2023-12-13 19:49:30.0

打印小于N的所有素数(质数)

程序功能为:如果自然数 i 为素数,则设 a[ i ] = 1, 否则   a[ i ] = 0.

1)首先把数组中的所有元素设为1,假设所有数都不是素数。

2)然后把数组中所有对应索引 < 已知素数的倍数 :非素数> 处的元素设为0. 

3)最后a[ i ]仍为1的即为素数


#include <stdio.h>
#include <stdlib.h>
#define N 1000 //素数范围
int main()
{int i, j, a[N];for(i = 2; i < N; ++i)a[i] = 1;for(i = 2; i < N; ++i){if(a[i]){for(j = 2; i*j < N; ++j)a[i*j] = 0;}}printf("指定范围的素数如下:\n");for (i = 2; i < N; ++i){if(a[i])printf("%3d\n", i);}system("pause");return 0;
}