欧拉函数模板

// 求 n 的欧拉函数
int calPhi(int n) {
    int ret = n;
    int bd = std::sqrt(n);
    for (int i = 2; i <= n / i; ++i) {
        if (n % i == 0) {
            ret = ret / i * (i - 1);
            while (n % i == 0) {
                n /= i;
            }
        }
    }
    if (n > 1) {
        ret = ret / n * (n - 1);
    }
    return ret % P;
}
posted @ 2023-03-07 11:15  hacker_dvd  阅读(19)  评论(0)    收藏  举报