素数打表:
int Mark[MAXSIZE];
int prime[MAXSIZE];
//判断是否是一个素数 Mark 标记数组 index 素数个数
int Prime(){
int index = 0;
memset(Mark,0,sizeof(Mark));
for(int i = 2; i < MAXSIZE; i++)
{
//如果未标记则得到一个素数
if(Mark[i] == 0){
prime[index++] = i;
}
//标记目前得到的素数的i倍为非素数
for(int j = 0; j < index && (long long)prime[j] * i < MAXSIZE; j++)
{
Mark[i * prime[j]] = 1;
if(i % prime[j] == 0){
break;
}
}
}
return index;
}
素数判断
#include <iostream>
#include <math.h>
using namespace std;
int isPrime(int n)
{ //返回1表示判断为质数,0为非质数,在此没有进行输入异常检测
float n_sqrt;
if(n==2 || n==3) return 1;
if(n%6!=1 && n%6!=5) return 0;
n_sqrt=floor(sqrt((float)n));
for(int i=5;i<=n_sqrt;i+=6)
{
if(n%(i)==0 | n%(i+2)==0) return 0;
}
return 1;
}
int main()
{
int flag;
flag=isPrime(37);
cout<<flag<<endl;
return 0;
}