bool primeVis[10100000]; //i是不是素数,从primeVis[2]开始有效
int prime[1000000]; //prime[1]=2,prime[2]=3...
int primeNum = 0; //N以内素数个数(1.2...primeNum)
void init_prim(int N)
{
memset(primeVis, true, sizeof(primeVis));
for (int i = 2; i <= N; ++i)
{
if (primeVis[i] == true)
{
primeNum++;
prime[primeNum] = i;
}
for (int j = 1; ((j <= primeNum) && (i * prime[j] <= N)); ++j)
{
primeVis[i * prime[j]] = false;
if (i % prime[j] == 0) break; //点睛之笔
}
}
}
bool judge_prime(int temp)//判断一个数是否为质数,返回1为素数,0为合数
{
for(int i=2;i*i<=temp;i++)
if(temp%i==0)
return false;
return true;
}
素数打表与素数单个判断
最新推荐文章于 2022-04-11 22:05:03 发布