您的位置:首页 > 其它

素性测试

2016-04-08 19:13 267 查看
例:素数判定

题意:给定整数n,请判定n是不是素数。

//假设输入的都是正数
//素性测试,复杂度为根号n
bool is_prime(int n)
{
for (int i = 2; i * i <= n; i++){
if (n % i == 0){
return false;
}
return n != 1;   //1是例外
}
}

//约数枚举,复杂度为根号n
vector<int> divisor(int n)
{
vector<int> res;
for (int i = 1; i * i <= n; i++){
if (n % i == 0){
res.push_back(i);
if (i != n / i)
res.push_back(n / i);
}
}
return res;
}

//整数分解,复杂度为根号n
map<int , int> prime_factor(int n)
{
map<int, int> res;
for (int i = 2; i * i <= n; i++){
while (n % i == 0){
++res[i];
n /= i;
}
}
if (n != 1)
res
= 1;
return res;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: