欧拉函数模板

// 求 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 @   hacker_dvd  阅读(10)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 一文读懂知识蒸馏
· 终于写完轮子一部分:tcp代理 了,记录一下
点击右上角即可分享
微信分享提示