nyoj 333-mdd的烦恼
2014-01-09 19:39
232 查看
http://acm.nyist.net/JudgeOnline/problem.php?pid=333
时间限制:1000 ms | 内存限制:65535 KB
难度:3
描述
今天mdd看到这么一段话:在数论,对正整数n,欧拉函数是少于或等于n的数中与n互质的数的数目。此函数以其首名研究者欧拉命名,它又称为Euler's totient function、φ函数、欧拉商数等。 例如φ(8)=4,因为1,3,5,7均和8互质。于是他想用计算机实现欧拉函数的功能,但是他又不想去写,你能帮帮他吗?
ps:互质(relatively primeì)又叫互素。若N个整数的最大公因数是1,则称这N个整数互质。
输入有多组测试数据组数小于1003,
每组测试数据有一个整数n(0<n<=65535^2+1).
输出输出欧拉函数φ(n)的值。
样例输入
样例输出
利用欧拉函数和它本身不同质因数的关系,用筛法计算出某个范围内所有数的欧拉函数值。
欧拉函数和它本身不同质因数的关系:欧拉函数ψ(N)=N{∏p|N}(1-1/p)亦即:ψ(N)=
(P是数N的质因数)
如:
ψ(10)=10×(1-1/2)×(1-1/5)=4;
ψ(30)=30×(1-1/2)×(1-1/3)×(1-1/5)=8;
ψ(49)=49×(1-1/7)=
=42。
mdd的烦恼
时间限制:1000 ms | 内存限制:65535 KB难度:3
描述
今天mdd看到这么一段话:在数论,对正整数n,欧拉函数是少于或等于n的数中与n互质的数的数目。此函数以其首名研究者欧拉命名,它又称为Euler's totient function、φ函数、欧拉商数等。 例如φ(8)=4,因为1,3,5,7均和8互质。于是他想用计算机实现欧拉函数的功能,但是他又不想去写,你能帮帮他吗?
ps:互质(relatively primeì)又叫互素。若N个整数的最大公因数是1,则称这N个整数互质。
输入有多组测试数据组数小于1003,
每组测试数据有一个整数n(0<n<=65535^2+1).
输出输出欧拉函数φ(n)的值。
样例输入
2 6 46
样例输出
1 2 22
利用欧拉函数和它本身不同质因数的关系,用筛法计算出某个范围内所有数的欧拉函数值。
欧拉函数和它本身不同质因数的关系:欧拉函数ψ(N)=N{∏p|N}(1-1/p)亦即:ψ(N)=
(P是数N的质因数)
如:
ψ(10)=10×(1-1/2)×(1-1/5)=4;
ψ(30)=30×(1-1/2)×(1-1/3)×(1-1/5)=8;
ψ(49)=49×(1-1/7)=
=42。
#include<iostream> using namespace std; int oula(int n) { int ret = 1, i; for (int i = 2; i * i <= n; i++) { if (n % i == 0) { //剔除所有因子 n /= i; ret *= i - 1; while (n % i == 0) { n /= i; ret *= i;//为了保持公式的n*(1-1/p)..中的n } } } if (n > 1) //本身是质数的情况 ret *= n - 1; return ret; } int main() { int n; while (cin >> n) { cout << oula(n) << endl; } }
相关文章推荐
- NYOJ-333 mdd的烦恼【欧拉函数】
- nyoj-333-mdd的烦恼
- mdd的烦恼 NYOJ 333
- nyoj 333 mdd的烦恼
- 333 mdd的烦恼
- NYOJ - mdd的烦恼(欧拉函数)
- 333 mdd的烦恼【欧拉函数】
- nyoj-275-队花的烦恼一
- NYOJ 682 新手的烦恼
- nyoj&nbsp;279&nbsp;队花的烦恼2
- NYOJ-初学者的烦恼
- NYOJ_国王的烦恼
- nyoj题目275:队花的烦恼一
- NYOJ 453 小珂的烦恼 模拟
- NYOJ 536 开心的mdd
- nyoj 237 游戏高手的烦恼 二分匹配--最小点覆盖
- NYOJ-275 队花的烦恼一
- nyoj237 游戏高手的烦恼(二分匹配)
- nyoj_478_月老的烦恼(1)_201312101248
- nyoj 317-兔子的烦恼(gcd)