65,182
社区成员




bool IsPrime(unsigned n)
{
if(n<2)
return false;
for(unsigned i=2;i*i<=n;i++)
if(n%i==0)
return false;
return true;
}
#include <iostream>
#include <math.h>
using namespace std;
bool isPrimer(int n)
{
bool flag=true;
if(n==1) return false;
for(int i=2;i<=sqrt(n);i++)
if(n%i==0) {
flag=false;
break;
}
return flag;
}
int main(void)
{
cout << "please input a number" << endl;
int num;
cin>>num;
if(isPrimer(num)) {
cout << num << "是素数" << endl;
}else {
cout << num << "不是素数" << endl;
}
return 0;
}
#include <iostream>
//////////////////////////////////////////////////////////////////////////
#define N_PRIME 30000
#define SHIFT 5
#define BITSPERINT (1<<SHIFT)
#define MASK BITSPERINT-1
int prime[N_PRIME/BITSPERINT+1];
static inline void set(int i)
{
prime[i>>SHIFT] |= (1<<(i&MASK));
}
static inline void clr(int i)
{
prime[i>>SHIFT] &= ~(1<<(i&MASK));
}
static inline int test(int i)
{
return prime[i>>SHIFT] & (1<<(i&MASK));
}
//////////////////////////////////////////////////////////////////////////
bool is_prime(int n);//判断一个整数n是不是素数 注意只针对正数 负数一律视为非素数
void gen_prime_table(void);//生成素数表 一劳永逸
//////////////////////////////////////////////////////////////////////////
using namespace std;
//////////////////////////////////////////////////////////////////////////
int main()
{
//筛法生成素数表
gen_prime_table();
//unit test
int i;
for(i=2;i<N_PRIME;i++)
if (is_prime(i))
cout<<i<<" ";
return 0;
}
bool is_prime(int n)//简单包装
{
if (n>=2)
{
if(test(n))
return false;
else
return true;
}
else
return false;
}
void gen_prime_table(void)
{
int i,j;
for ( i=2;i<N_PRIME;i++)
if (!test(i))//
for (j=i;i*j<N_PRIME;j++)
set(i*j);//不是素数
}