筛选MAXNUM-1以内的素数

#include <stdio.h>

int main()
{
	const int MAXNUM = 101;        //最大数为101,0号不使用以防止发生错误
	int NotPrime[MAXNUM] = {1,1};  //注意此处1-i不是素数,0-i是素数,假设目前都是素数,以便筛除
	for (int i = 2; i < MAXNUM; i++) //每次都是找到最小的是素数的数字,最后一个单元是[MAXNUM-1]
	{
		if (NotPrime[i]==0)         //找到一个最小的素数,开始进行操作标记
		{
			for (int j=2; i*j < MAXNUM; j++)  //i的j倍标记为1
			{
				NotPrime[i*j] = 1;
			}
		}
	}
	for (int j = 2; j < MAXNUM; j++)
	{
		if (!NotPrime[j])
		{
			printf("%d\n",j);
		}
	}
	return 0;
}

输出shell效果如下图所示

自创埃氏筛进行素数的筛选,使用辅助数组,空间复杂度为O(n)

 

相关文章:

  • 2021-04-07
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-11-24
  • 2022-01-29
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2021-06-27
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-10-03
相关资源
相似解决方案