素性测试

来源:互联网 发布:淘宝复核阿里钱盾 编辑:程序博客网 时间:2024/06/14 07:18

例:素数判定

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

//假设输入的都是正数//素性测试,复杂度为根号nbool is_prime(int n){    for (int i = 2; i * i <= n; i++){        if (n % i == 0){            return false;        }        return n != 1;   //1是例外    }}//约数枚举,复杂度为根号nvector<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;}//整数分解,复杂度为根号nmap<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[n] = 1;    return res;}


0 0
原创粉丝点击