**质数**(prime number)又称素数,有无限个。一个大于1的自然数,除了1和它本身外,不能被整除,换句话说就是该数除了1和它本身以外不再有其他的因数,否则被称为合数。
(1)素数判断
bool isprime(int n)
{
int i;
for(i=2;i<n;i++)
if(n%i==0)
break;
if(i<n || n==1)
return false;
else
return true;
}
这里有一个小结论:
大于2的所有偶数都可以分解为两个素数之和;
(2)素数打表
const int MAX = 1E5+10;
int n,i,j,a[MAX],p[MAX],t=0;
void prime(int n)
{
memset(a,0,sizeof(a));
a[1]=1;
for(i=2;i<=n;i++)
if(!a[i]){
p[t++]=i;
for(j=i+i;j<=n;j+=i) a[j]=1;
}
for(i=0;i<t;i++)
printf("%d%s",p[i],i<t-1?" ":"\n");
}