博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
求欧拉函数
阅读量:4708 次
发布时间:2019-06-10

本文共 727 字,大约阅读时间需要 2 分钟。

欧拉函数Φ(x)是小于等于x的正整数中与x互质的数的个数。

先放一下公式:

 

然后放一下代码:

1 inline int totient(int x) { 2     int tot = x; 3     for (int i = 2; i * i <= x; ++i) 4         if (x % i == 0) { 5             tot = tot / i * (i - 1); //先做除法防溢出 6             while (x % i == 0) x /= i; //将此质因数完全除尽 7         } 8     if (x > 1) tot = tot / x * (x - 1); //最后可能剩个质数,或一开始就是个质数 9     return tot;10 }

 实际上上述代码用于求少量数的欧拉函数还是可以的,但如果需要求一段较长区间内的欧拉函数值时,我们可以用下面的方法。

1 int phi[maxn];2 3 inline void getphi(int n) {4     for (int i = 1; i <= n; ++i) phi[i] = i;5     for (int i = 2; i <= n; ++i) //找出质数,处理他们的整数倍6         if (phi[i] == i) for (int j = i; j <= n; j += i)7             phi[j] = phi[j] / i * (i - 1); //还是公式8 }

 

转载于:https://www.cnblogs.com/Mr94Kevin/p/9716614.html

你可能感兴趣的文章
图像形态学及更通用的形态学的原理及细节汇总
查看>>
linux开启coredump的3种方法
查看>>
数据驱动之 python + requests + Excel
查看>>
小鸡啄米问题求解
查看>>
Castle.net
查看>>
HDU1532 网络流最大流【EK算法】(模板题)
查看>>
PHP使用curl替代file_get_contents
查看>>
Webstorm通用设置
查看>>
jquery倾斜的动画导航菜单
查看>>
JAVA IO流的简单总结+收集日志异常信息
查看>>
类型转换与键盘输入
查看>>
面向对象(2)
查看>>
运算符(1)
查看>>
掷骰子游戏和条件语句
查看>>
循环语句
查看>>
加标签的continue用法
查看>>
递归算法
查看>>
java继承 、方法重写、重写toString方法
查看>>
SQL注入原理-手工联合注入查询技术
查看>>
实验3 SQL注入原理-万能密码注入
查看>>