您的位置:首页 > 编程语言 > Go语言

Algorithm,Number Theory,Prime

2013-07-24 13:14 183 查看
/***************************************************/
// 测素数,根号阶
bool is_prime(int u)
{
if(u == 0 || u == 1) return false;
if(u == 2)      return true;
if(u%2 == 0)      return false;
for(int i=3; i <= sqrt(u) ;i+=2)
if(u%i==0)     return false;
return true;
}

/***************************************************/
// 线性筛素数
const int M = 1000; // M : size
bool mark[M]; // true : prime number

void sieve_prime()
{
memset(mark, true, sizeof(mark));
mark[0] = mark[1] = false;// 0 not used, 1 is not prime
for(int i=2; i <= sqrt(M) ;i++) {// 2-> 4, 6, 8, ... //3->9, 12, 15...// 5->25, 30, ...
if(mark[i]) {
for(int j=i*i; j < M ;j+=i)
mark[j] = false;
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: