分解质因数 欧拉函数
来源:互联网 发布:js字符split 编辑:程序博客网 时间:2024/05/21 18:39
NKOJ3801 分解质因数
问题描述
记Pi表示正整数i的质因数集合。
已知正整数n,求满足下列条件的有序正整数对(a,b)的数目:
(1)1<=a<=b<=n
(2)t为a,b的最大公约数,Pt是Pn的子集
输入格式
一个正整数n.
输出格式
一个正整数,表示合题意的有序正整数对的数目.
样例输入 1
6
样例输出 1
20
样例输入 2
7
样例输出 2
19
数据范围
50%的数据1<=n<=2000;
100%的数据1<=n<=1000000.
来源 @lym01803
1是没有质因数的,因此1的质因数集合是空集,而空集属于所有集合。此时显然可以用欧拉函数来搞。
注意到欧拉函数的计算式:
欧拉函数函数的本质是容斥原理。那么将欧拉函数稍加改动,设p是Pn中的元素,那么我们可以先求出正常的
这样的话,最终答案就是
#include<stdio.h>#define ll long long#define MAXN 1000005int N,E[MAXN];ll Ans,phi[MAXN],P[MAXN];void Euler(int x){ int i,j; phi[1]=1; for(i=2;i<=x;i++) { if(!phi[i])phi[i]=i-1,P[++P[0]]=i; for(j=1;j<=P[0]&&i*P[j]<=x;j++) { if(i%P[j]==0) { phi[i*P[j]]=phi[i]*P[j]; break; } else phi[i*P[j]]=phi[i]*phi[P[j]]; } }}int main(){ int i,j; scanf("%d",&N); Euler(N); for(i=1;i<=P[0]&&P[i]<=N;i++)if(N%P[i]==0)E[++E[0]]=P[i]; for(i=1;i<=N;i++) for(j=1;j<=E[0];j++) { if(i%E[j]==0)phi[i]=phi[i]*E[j]/(E[j]-1); } for(i=1;i<=N;i++)Ans+=phi[i]; printf("%lld",Ans);}
阅读全文
0 0
- 分解质因数 欧拉函数
- phi(大数质因数分解欧拉函数)
- poj2154质因数分解+快速幂+欧拉函数解决
- 【题】【数学(欧拉函数)】NKOJ3801 分解质因数
- HDU 1695 GCD 【容斥】【质因数分解】【欧拉函数】
- NKOJ 3800 分解质因数(欧拉函数+线性筛)
- HDU 1695 GCD 欧拉函数+容斥原理+质因数分解
- 【HDU1695】 GCD (欧拉筛+欧拉函数+质因数分解+容斥原理)
- Pollard的rho启发式因子分解算法 & [CodeVS 4939] 欧拉函数:Miller-Rabin + Pollard-rho 质因数分解
- 函数:分解质因数
- 函数分解质因数
- 求数论求约数和 与 互质和算法 (分解质因数与欧拉函数)
- HHU暑期第一弹——小小小数论(欧拉函数+埃式筛法+分解质因数+欧几里得算法+扩展欧几里得算法和模线性方程)
- hdu 3589 Jacobi symbol(欧拉准则暴力求解+分解质因数+素数筛表)
- 【原创】数论模板-拓展欧几里得,质因数分解,快速幂快速加,欧拉函数筛法,欧拉函数求法,筛质数,卡塔兰数,筛逆元,第一二类斯特林数,米勒罗宾算法
- 分解质因数
- 分解质因数
- 质因数分解
- Longest Run on a Snowboard UVA
- android 修改系统语言默认中文
- Mybatis之mapper XML 文件
- C++ MFC / VS2013 之十五(对话框:文件对话框)
- Android 搜索框的实时查询/模糊查询
- 分解质因数 欧拉函数
- 读书笔记《Lua设计与实现》 了解Lua底层
- python中的argsort()函数
- 在win7下安装biolinux虚拟机
- Cocos2d-x lua中的定时器
- C语言操作符总结
- 2017长乐国庆欢乐赛Day1
- 剑指offer--替换空格
- dinic 最大流模板