HDOJ-1787 GCD Again(欧拉函数)
来源:互联网 发布:python 金融数据接口 编辑:程序博客网 时间:2024/05/20 02:52
ans=n-1-Eular(n)
Eular(n)表示欧拉函数,[1,n]区间内与n互质的整数的个数
通式:Eular(x)=x(1-1/p1)(1-1/p2)(1-1/p3)(1-1/p4)…..(1-1/pn),其中p1, p2……pn为x的所有质因数,x是不为0的整数。
Eular(1)=1(唯一和1互质的数(小于等于1)就是1本身)
顺便提一下,有一个有意思的公式:一个数的所有质因子之和是Euler(n)*n/2。
求法有多重,比如分解质因数、筛选法、公式法
下面的代码就是公式法:
#include <cmath>#include <cstdio>#include <cstdlib>#include <cstring>#include <algorithm>using namespace std;typedef __int64 i64;i64 Eular(__int64 n){i64 ans = n;for (int i = 2; i*i <= n; i++){if (n%i == 0){ans -= ans / i;while (n%i == 0)n /= i;}}if (n > 1) ans -= ans / n;return ans;}void work(i64 n){i64 ans;ans = Eular(n);ans = n - 1 - ans;printf("%I64d\n",ans);}int main(){i64 n;while (scanf("%I64d", &n), n)work(n);return 0;}
0 0
- HDOJ GCD Again 1787【欧拉函数】
- HDOJ-1787 GCD Again(欧拉函数)
- hdoj 1787 GCD Again(欧拉函数)
- HDOJ 题目1787 GCD Again(欧拉函数)
- HDOJ 1787 GCD Again(欧拉函数)
- HDOJ 1787 GCD Again (欧拉函数)
- hdoj GCD Again 1787 (欧拉函数)
- hdoj 1787 GCD Again (欧拉函数模板 )
- HDOJ 1787 GCD Again (欧拉函数)
- hdu 1787 GCD Again 欧拉函数
- HDU 1787 GCD Again 欧拉函数
- HDU 1787 GCD Again (欧拉函数)
- hdu 1787 GCD Again 欧拉函数小水水 数论
- HDU 1787 GCD Again 【欧拉函数模板】
- GCD Again HDU杭电1787【欧拉函数】
- HDU 1787 GCD Again (欧拉函数)
- 【杭电oj】1787 - GCD Again(欧拉函数)
- 杭电1787GCD Again(欧拉函数)
- [C++11 并发编程] 07 - Mutex 死锁
- 栈和堆的区别
- 自用图形解锁分析
- Hello world!Blog.
- 九度oj 1036
- HDOJ-1787 GCD Again(欧拉函数)
- python中IndentationError
- 栈
- Android Map根据键或者值进行排序
- Daemon 方式启动
- HPOJ 1698: 海域, 冰山, 战舰【DFS】
- Heagon的程序流程(二)
- Reorder List(***)
- LightOJ 1008 -周赛3-补题