hdu1787,直接求欧拉函数

#include <iostream>
#include <cstdio>
using namespace std;
int n;
int phi(int n){
int 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;
}
int main(){
while(scanf("%d", &n)!=EOF){
if(!n) break;
printf("%d\n",n-phi(n)-1);
}
return 0;
}

poj2478,欧拉函数递推,证明可以看这里或者是算法竞赛进阶指南

\(n \log n\) 筛

#include <iostream>
#include <cstring>
#include <cstdio>
using namespace std;
int n;
long long phi[1000005];
void shai(){
for(int i=2; i<=1000000; i++)
phi[i] = i;
for(int i=2; i<=1000000; i++)
if(phi[i]==i)
for(int j=i; j<=1000000; j+=i)
phi[j] = phi[j] / i * (i - 1);
}
int main(){
shai();
for(int i=2; i<=1000000; i++)
phi[i] += phi[i-1];
while(scanf("%d", &n)!=EOF){
if(!n) break;
printf("%lld\n", phi[n]);
}
return 0;
}

线性筛:

#include <iostream>
#include <cstring>
#include <cstdio>
using namespace std;
typedef long long ll;
int n, pri[1000005], cnt;
ll phi[1000005];
bool isp[1000005];
void shai(){
memset(isp, true, sizeof(isp));
isp[0] = isp[1] = false;
for(int i=2; i<=1000000; i++){
if(isp[i]) pri[++cnt] = i, phi[i] = i - 1;
for(int j=1; j<=cnt; j++){
if(i*pri[j]>1000000) break;
isp[i*pri[j]] = false;
if(i%pri[j]==0){
phi[i*pri[j]] = phi[i] * pri[j];//感性理解:12:1 5 7 11
break;
}
else phi[i*pri[j]] = phi[i] * (pri[j] - 1);//积性函数
}
}
}
int main(){
shai();
for(int i=2; i<=1000000; i++)
phi[i] += phi[i-1];
while(scanf("%d", &n)!=EOF){
if(!n) break;
printf("%lld\n", phi[n]);
}
return 0;
}

上面那种得到了素数,下面这种得到了最小质因子

#include <iostream>
#include <cstring>
#include <cstdio>
using namespace std;
int n, pri[1000005], cnt, val[1000005];
long long phi[1000005];
void shai(){
for(int i=2; i<=1000000; i++){
if(!val[i]){
val[i] = i;
pri[++cnt] = i;
phi[i] = i - 1;
}
for(int j=1; j<=cnt; j++){
if(pri[j]>val[i] || pri[j]>1000000/i) break;
val[i*pri[j]] = pri[j];
phi[i*pri[j]] = phi[i]*(i%pri[j]?(pri[j]-1):pri[j]);
}
}
}
int main(){
shai();
for(int i=2; i<=1000000; i++)
phi[i] += phi[i-1];
while(scanf("%d", &n)!=EOF){
if(!n) break;
printf("%lld\n", phi[n]);
}
return 0;
}

hdu1787 GCD Again poj 2478 Farey Sequence 欧拉函数的更多相关文章

  1. poj 2478 Farey Sequence(欧拉函数是基于寻求筛法素数)

    http://poj.org/problem?id=2478 求欧拉函数的模板. 初涉欧拉函数,先学一学它主要的性质. 1.欧拉函数是求小于n且和n互质(包含1)的正整数的个数. 记为φ(n). 2. ...

  2. poj 2478 Farey Sequence 欧拉函数前缀和

    Farey Sequence Time Limit: 1000MS   Memory Limit: 65536K       Description The Farey Sequence Fn for ...

  3. POJ2478 Farey Sequence —— 欧拉函数

    题目链接:https://vjudge.net/problem/POJ-2478 Farey Sequence Time Limit: 1000MS   Memory Limit: 65536K To ...

  4. poj2478 Farey Sequence (欧拉函数)

    Farey Sequence 题意:给定一个数n,求在[1,n]这个范围内两两互质的数的个数.(转化为给定一个数n,比n小且与n互质的数的个数) 知识点: 欧拉函数: 普通求法: int Euler( ...

  5. poj2478 Farey Sequence 欧拉函数的应用

    仔细看看题目,按照题目要求 其实就是 求 小于等于n的 每一个数的 欧拉函数值  的总和,为什么呢,因为要构成 a/b 然后不能约分  所以 gcd(a,b)==1,所以  分母 b的 欧拉函数值   ...

  6. UVA12995 Farey Sequence [欧拉函数,欧拉筛]

    洛谷传送门 Farey Sequence (格式太难调,题面就不放了) 分析: 实际上求分数个数就是个幌子,观察可以得到,所求的就是$\sum^n_{i=2}\phi (i)$,所以直接欧拉筛+前缀和 ...

  7. POJ 2478 Farey Sequence(欧拉函数前n项和)

    A - Farey Sequence Time Limit:1000MS     Memory Limit:65536KB     64bit IO Format:%I64d & %I64u ...

  8. Poj 2478-Farey Sequence 欧拉函数,素数,线性筛

    Farey Sequence Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 14291   Accepted: 5647 D ...

  9. POJ-2478-Farey Sequence(欧拉函数)

    链接: https://vjudge.net/problem/POJ-2478 题意: The Farey Sequence Fn for any integer n with n >= 2 i ...

随机推荐

  1. 使用 xib 设置 button 等款等高

    很多时候需要使用平分的控件来布局,当然xib中可以之间使用 UIToolBar 使用 UIBarButtonItem 添加弹簧即可完成平均分布 但是,直接使用 button 也可以实现平均布局

  2. AngularJS(五):表单及输入验证

    本文也同步发表在我的公众号“我的天空” 表单基础 表单是HTML中很重要的一个部分,基本上我们的信息录入都依靠表单,接下来我们学习如何在AngularJS中使用表单,首先看以下示例代码: <bo ...

  3. 【简记】HTML + CSS 的一些要点(不定时更新)

    1.td占据多行 / 列时,其挤开的 td 不写(但是包裹 td 的 tr 要写) 2. display:td 的元素中的文本默认垂直不居中(table中的td中的文本是垂直居中的) 3.th虽然定义 ...

  4. JavaScript笔记6-数组新方法

    七.ECMAScript5关于数组的新方法 1.forEach():遍历数组,并为每个元素调用传入的函数;     举例:    var a = [1,2,3]; var sum = 0; //传一个 ...

  5. 我们为什么要看《超实用的HTML代码段》

    不知道自己HTML水平如何,不知道HTML5如何进化?看这张图 如果一半以上的你都不会,必须看这本书,阿里一线工程师用代码和功能页面来告诉你每一个技术点. 都会一点,但不知道如何检验自己,看看本书提供 ...

  6. Beginning Python Chapter 1 Notes

    James Payne(American)编写的<Beginning Python>中文译作<Python入门经典>,堪称是Python的经典著作. 当然安装Python是很简 ...

  7. 【TensorFlow入门完全指南】神经网络篇·MLP多层感知机

    前面的不做过多解释了. 这里定义了两个占位符,各位也知道,在训练时,feed_dict会填充它们. 定义相关网络. 这里是权值矩阵和偏差. 这里是实例化了网络,定义了优化器和损失,和上一篇一样. 最后 ...

  8. 将SQL2008升级为SQL2008 r2

    我的SQL2008版本信息 Microsoft SQL Server Management Studio     10.0.1600.22 ((SQL_PreRelease).080709-1414 ...

  9. UVA 12673 Erratic Expansion 奇怪的气球膨胀 (递推)

    不难发现,每过一个小时,除了右下方的气球全都是蓝色以外,其他都和上一个小时的气球是一样的,所以是可以递推的.然后定义一类似个前缀和的东西f(k,i)表示k小时之后上面i行的红气球数.预处理出k小时的红 ...

  10. ios常见错误之 Failed to instantiate the default view controller for UIMainStoryboardFile 'Main' - perhaps the designated entry point is not set?

    Failed to instantiate the default view controller for UIMainStoryboardFile 'Main' - perhaps the desi ...