HDU 3501【欧拉函数拓展求一个数的所有质因子之和】
来源:互联网 发布:大圣数据 编辑:程序博客网 时间:2024/05/16 15:38
欧拉函数
欧拉函数是指:对于一个正整数n,小于n且和n互质的正整数(包括1)的个数,记作φ(n) 。
通式:
其中p1, p2……pn为x的所有质因数,x是不为0的整数。φ(1)=1(唯一和1互质的数就是1本身)。
对于质数p,φ(p) = p - 1。注意φ(1)=1.
欧拉定理:对于互质的正整数a和n,
欧拉函数是积性函数——若m,n互质,φ(mn)=φ(m)φ(n)。
若n是质数p的k次幂,,因为除了p的倍数外,其他数都跟n互质。
特殊性质:当n为奇数时,φ(2n)=φ(n)
欧拉函数还有这样的性质:
设a为N的质因数,
若(N % a == 0 && (N / a) % a == 0) 则有E(N)=E(N / a) * a;
若(N % a == 0 && (N / a) % a != 0) 则有:E(N) = E(N / a) * (a - 1)。
欧拉公式的延伸:一个数的所有质因子之和是euler(n)*n/2。
#include <bits/stdc++.h>using namespace std;typedef long long LL;const LL mod=1e9+7;LL eluer(LL n){ LL res=n,a=n; for(LL i=2;i*i<=a;i++) { if(a%i==0) { res=res/i*(i-1); while(a%i==0) a/=i; } } if(a>1) res=res/a*(a-1); return res;}int main(){ LL n,ans; while(~scanf("%lld",&n)&&n) { ans=n*(n+1)/2-n; ans=(ans-eluer(n)*n/2)%mod; printf("%lld\n",ans); } return 0;}
0 0
- HDU 3501【欧拉函数拓展求一个数的所有质因子之和】
- 求一个数的质因子以及欧拉函数
- 求一个数的所有质因子
- hdu 3501 欧拉函数(求小于n与n不互质的数之和)
- 求一个数的所有素数因子
- 求一个数的所有因子
- 求一个数的所有素因子
- hdu 3501 欧拉函数的拓展
- (hdu step 2.1.5)七夕节(球一个数的所有因子之和)
- 快速求一个大区间的所有因子之和
- java小练习(一个数如果恰好等于它的因子之和,这个数就称为“完数”。编写应用程序,求1000之内的所有完数。)
- 求一个数的所有因子的积
- HDU 1215 求N的因子之和
- lightoj 1014 求一个数的所有因子
- HDU 6069 求区间[L,R]每个数的k次方的因子数之和
- 求一个数的质因子
- 求一个数的质因子
- 求一个很大的数的欧拉函数
- hdu 5877 - Weak Pair (2016大连网络赛) 离散化 + 树状数组
- SQL Server配置管理器无法连接到 WMI 提供程序。您没有权限或者该服务器无法访问
- 文件上传(io流、fileupload 组件)、下载(动静态方式)
- 归并排序的个人学习记录
- 迭代器模式
- HDU 3501【欧拉函数拓展求一个数的所有质因子之和】
- 文章标题
- poi导出用户资料基本操作
- Material Design学习:CoordinatorLayout+AppBarLayout+CollapsingToolbarLayout
- 原型模式
- MFC中创建多线程
- 【OpenGL】直线生成算法DDA+Bresenham
- 手把手教你Hibernate工程
- mysql5.7 upgrade issue GROUP BY incompatible with sql_mode=only_full_group_by