关于快速寻找素数的方法

利用素数筛选法进行素数的快速查找。

原理很简单,素数一定是奇数,素数的倍数一定不是素数。

思路如下:

预定义N表示10000,即表示查找10000以内的素数,首先定义数组prime[]对N以内的数进行标记,奇数存为1,偶数存为0,最终实现结果为素数的prime值为1,因此将prime[2]赋值为1(2是素数)。之后利用for循环,对N以内的奇数进行遍历(注意for循环的条件控制),for里用if判断是否为素数(奇数),若是,执行内部嵌套的for循环判断该奇数是否为素数,若是则标记为1,若不是则prime置为0,之后再用if判断是否为素数,若是,则利用循环将该素数的倍数,都标记为0,意在体现,素数的倍数一定不是素数,注意for循环内部的条件:for(j=2*i;j

这一算法理解之后较为简单,主要难点在于for循环的应用,条件的判断,逻辑必须要清晰
#include
#include
#define N 10000
int prime[N];
int main()
{
	int i,j,k;
	for(i=2;i<=N;i++)
	{
		if(i&1) prime[i]=1;//奇数存为1 
		else prime[i]=0;//偶数存为0 
	}
	prime[2]=1;//2是素数 
	for(i=3;i


你可能感兴趣的:(数论,c++,数据结构与算法)