51Nod: http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1136

基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题
 
对正整数n,欧拉函数是少于或等于n的数中与n互质的数的数目。此函数以其首名研究者欧拉命名,它又称为Euler's totient function、φ函数、欧拉商数等。例如:φ(8) = 4(Phi(8) = 4),因为1,3,5,7均和8互质。

 
Input
输入一个数N。(2 <= N <= 10^9)
Output
输出Phi(n)。
Input示例
8
Output示例
4

题解:

(1), 对N进行因子分解,得到若干个素因子,那么在 [1, n] 之间, 凡是这些素因子的倍数都是与N不互素的

(2), 使用容斥原理,对于素因子 P1, p2, ... pK,  比如P1就存在着 [p1, 2*p1, 3*p1, ... num1*p1],  (num1*p1 <= N),  可以得到:num1 = n/p1;

(3), 另外多个素因子之间可能重复计算了公倍数, 利用 Num(p1) + Num(p2) + Num(p2) - Num(p1*p2) - Num(p2*p3) - Num(p3*p1) + Num(p1*p2*p3) 计算出实际的个数。

(4), 最后,[1, N] 之间有N 个数字, 所以, N - 素因子及其倍数的个数, 得到答案。

#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
using namespace std; const int maxn = 2000000;
const int maxm = 100000; bool prime[maxn];
int cnt, p[maxm], fac[maxm], output[maxm]; void IsPrime(){
memset(prime, false, sizeof(prime));
cnt = 0;
for(int i=2; i<maxn; ++i){
if(!prime[i]){
p[cnt++] = i;
for(int j=i+i; j<maxn; j+=i){
prime[j] = true;
}
}
}
} int solve(int n){
int k, num = 0, t = 0, tmp = n;
for(int i=0; p[i]*p[i]<=n; ++i){
if(n%p[i] == 0){
fac[num++] = p[i];
while(n%p[i]==0){ n=n/p[i]; }
}
}
if(n > 1){
fac[num++] = n;
}
output[t++] = -1;
for(int i=0; i<num; ++i){
k = t;
for(int j=0; j<k; ++j){
output[t++] = output[j]*fac[i]*(-1);
}
}
int sum = 0;
for(int i=1; i<t; ++i){
sum = sum + tmp/output[i];
}
return sum;
} int main(){
//freopen("in.txt", "r", stdin); IsPrime();
int ans, n;
while(scanf("%d", &n) != EOF){
ans = solve(n);
printf("%d\n", (n - ans) );
}
return 0;
}

  

Reference: http://www.cnblogs.com/jiangjing/archive/2013/06/03/3115470.html

51Nod-1136 欧拉函数的更多相关文章

  1. 51Nod 1136 欧拉函数 Label:数论

    对正整数n,欧拉函数是少于或等于n的数中与n互质的数的数目.此函数以其首名研究者欧拉命名,它又称为Euler's totient function.φ函数.欧拉商数等.例如:φ(8) = 4(Phi( ...

  2. (数论)51NOD 1136 欧拉函数

    对正整数n,欧拉函数是少于或等于n的数中与n互质的数的数目.此函数以其首名研究者欧拉命名,它又称为Euler's totient function.φ函数.欧拉商数等.例如:φ(8) = 4(Phi( ...

  3. [51Nod 1244] - 莫比乌斯函数之和 & [51Nod 1239] - 欧拉函数之和 (杜教筛板题)

    [51Nod 1244] - 莫比乌斯函数之和 求∑i=1Nμ(i)\sum_{i=1}^Nμ(i)∑i=1N​μ(i) 开推 ∑d∣nμ(d)=[n==1]\sum_{d|n}\mu(d)=[n== ...

  4. 51nod 1239 欧拉函数之和(杜教筛)

    [题目链接] https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1239 [题目大意] 计算欧拉函数的前缀和 [题解] 我们 ...

  5. 51Nod 1239 欧拉函数前n项和 杜教筛

    http://www.51nod.com/Challenge/Problem.html#!#problemId=1239 AC代码 #include <bits/stdc++.h> #de ...

  6. 51nod 1040 欧拉函数

    http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1040 1040 最大公约数之和 题目来源: rihkddd 基准时间限制 ...

  7. 51nod 1239 欧拉函数之和【欧拉函数+杜教筛】

    和bzoj 3944比较像,但是时间卡的更死 设\( f(n)=\sum_{d|n}\phi(d) g(n)=\sum_{i=1}^{n}f(i) s(n)=\sum_{i=1}^{n}\phi(i) ...

  8. 51nod 1040 最大公约数之和(欧拉函数)

    1040 最大公约数之和 题目来源: rihkddd 基准时间限制:1 秒 空间限制:131072 KB 分值: 80 难度:5级算法题   给出一个n,求1-n这n个数,同n的最大公约数的和.比如: ...

  9. 51nod 1040最大公约数和(欧拉函数)

    1040 最大公约数之和 题目来源: rihkddd 基准时间限制:1 秒 空间限制:131072 KB 分值: 80 难度:5级算法题  收藏  关注 给出一个n,求1-n这n个数,同n的最大公约数 ...

随机推荐

  1. jQuery静态方法isFunction,isArray,isWindow,isNumeric使用和源码分析

    上一篇随笔中总结了js数据类型检测的几个方法和jQuery的工具方法type方法,本篇要分析几个方法都依赖type方法,所以不了解type方法的请先参看http://www.cnblogs.com/y ...

  2. 如何使用CSS绘制一个响应式的矩形

    背景: 最近因为需要用到绘制类似九宫格的需求,所以研究了一下响应式矩形的实现方案. 有如下几种方案: 使用js来设置元素的高度 使用vw单位  div {width: 50vw; height: 50 ...

  3. Erlang 虚拟机内的内存管理(Lukas Larsson演讲听写稿)

    Erlang核心开发者Lukas Larsson在2014年3月份Erlang Factory上的一个演讲详细介绍了Erlang内存体系的原理以及调优案例: http://www.erlang-fac ...

  4. .Net中使用SendGrid Web Api发送邮件(附源码)

    SendGrid是一个第三方的解决邮件发送服务的提供商,在国外使用的比较普遍.国内类似的服务是SendCloud.SendGrid提供的发送邮件方式主要是两种, 一种是SMTP API, 一种是Web ...

  5. C#中 ??、 ?、 ?: 、?.、?[ ]

    1. 可空类型修饰符(?)引用类型可以使用空引用表示一个不存在的值,而值类型通常不能表示为空. 例如:string str=null; 是正确的,int i=null; 编译器就会报错. 为了使值类型 ...

  6. ORACLE Linux以及 Unbreakable Enterprise Kernel

    Oracle Linux,全称为Oracle Enterprise Linux,简称OEL,Linux发行版本之一.Oracle公司在2006年初发布第一个版本,以对Oracle软件和硬件支持较好见长 ...

  7. RMAN命令LIST操作总结

    在使用RMAN备份.还原的过程中,我们经常需要查看备份的一些详细信息,例如,RMAN提供了LIST命令.关于LIST命令的详细信息 可以参考Oracle Database Backup and Rec ...

  8. date命令总结

    date命令是显示或设置系统时间与日期 date(选项)(参数) -d<字符串>:显示字符串所指的日期与时间.字符串前后必须加上双引号: -s<字符串>:根据字符串来设置日期与 ...

  9. W3School-CSS 表格实例

    CSS 表格实例 CSS 实例 CSS 背景实例 CSS 文本实例 CSS 字体(font)实例 CSS 边框(border)实例 CSS 外边距 (margin) 实例 CSS 内边距 (paddi ...

  10. android onActivityResult无效或先执行或无回传问题

    我的问题属于第一种情况,更改后下确有回传结果. (http://www.cnblogs.com/tt_mc/p/3586834.html) Android Activity的加载模式和onActivi ...