素数筛(自己需要记住的)

#include <stdio.h>

#include <string.h>

#include <math.h>



int f[3000000];



int main()

{

	int i, j, k;



	f[0]=0; f[0]=1; f[2]=1;



    for(i=0; i<=3000000; i++) //所有2的倍数标记为不是素数

	{

		if(i%2==0)

		{

		  f[i]=0;

		}

		else

		{

			f[i]=1;  //奇数暂且标记为 1

		}

	}

	int t=sqrt(3000000*1.0);

	for(i=3; i<=t; i++)

	{

		if(f[i]==1) //说明是素数

		{

            for(j=2*i; j<=3000000; j+=i)

			{

				f[j] = 0;

			}

		}

	}

	for(k=0; k<=1000; k++)

	{

		printf("%d*%d* ", k, f[k] );

	}

	return 0;

}

 

你可能感兴趣的:(素数)