【POJ2478】Farey Seque
题意:

就是求2~n的所有欧拉函数值的和,这里就用到了快速求欧拉函数的方法。(不能暴力求了,不然必定TLE啊)
说说欧拉筛法,感觉十分机智啊~~

对于上述代码的几个问题:
1.问:为什么i%prime==0时break?
答:欧拉筛法每次合成时都是用最小质因子合成的,如果我们在程序加一行记录,即可先行求出1~Maxn的最小质因子。这样避免不必要的重复,提高效率。
2.为什么当i%prime[j]==0时,phi[i*prime[j]]=phi[i]*prime[j]? 否则,phi[i*prime[j]]=phi[i]*(prime[j]-1)?
答:这是欧拉函数的几个性质哦,下面说说这个东西的证明。
欧拉函数的几个性质:E(x)表示比x小的且与x互质的正整数的个数。
1、*若p是素数,E(p)=p-1。
2、*E(p^k)=p^k - p^k /p = p* p^(k-1) - 1* p^(k-1) = (p-1)*p^(k-1)
证明如下:

最后一行有点难理解,解释一下:
假设a和b并不互质,b是质数,a是b的倍数。gcd(a,b)=b。E(a)和E(b)中都有一项(b-1)*b^0->(b-1),我们E(ab)的算式中间就有一项(b-1)*b,而E(a)和E(b)相乘后会变成(b-1)^2,所以在E(a)*E(b)的同时还要乘上b/b-1才能是结果正确,那么E(a*b)=E(a)*E(b)*b/b-1。因为b是质数,所以E(b)=b-1,所以有E(a*b)=E(a)*b。
因此,我们得到两个推论咯:
1、 当n为奇数时,E(2n)=E(n)
2、 当n是一个大于2的正整数时,E(n)是偶数
目前还没有发现这两个推论的用处,可以先记一记。不过上述两个性质是很重要哒~~~
这题的代码如下:
#include<cstdio>
#include<cstring>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<cmath>
using namespace std;
#define Maxn 1000000
#define LL long long int phi[Maxn+],prime[Maxn+];
LL h[Maxn+];
bool vis[Maxn+]; void ffind()
{
memset(vis,,sizeof(vis));
int len=;
for(int i=;i<=Maxn;i++)
{
if(!vis[i]) prime[++len]=i,phi[i]=i-;
for(int j=;j<=len;j++)
{
if(i*prime[j]>Maxn) break;
vis[i*prime[j]]=;
if(i%prime[j]==)
{
phi[i*prime[j]]=phi[i]*prime[j];
break;
}
else phi[i*prime[j]]=phi[i]*(prime[j]-);
}
}
h[]=;
for(int i=;i<=Maxn;i++) h[i]=h[i-]+phi[i];
//for(int i=2;i<=20;i++) printf("%d:%d\n",i,phi[i]);
} int main()
{
int n;
ffind();
while()
{
scanf("%d",&n);
if(n==) break;
printf("%lld\n",h[n]);
}
return ;
}
poj24778
感觉这种题就是,看着别人的题解做,理解思路比打代码花的时间多了去了。数论一定要好好理解透彻啊~~
2016-02-04 16:42:48
【POJ2478】Farey Seque的更多相关文章
- 【poj2478】 Farey Sequence
http://poj.org/problem?id=2478 (题目链接) 题意 求分母小于等于n的真分数的个数. Solution 现在只能做做水题了,唉,思维僵化. 细节 前缀和开LL 代码 // ...
- 【poj2478】Farey Sequence
题意: 求前n项的欧拉函数之和 题解: 预处理出所有欧拉函数 赤裸裸的模版题- - 没什么好说的 代码: #include <cstdio> typedef long long ll; ; ...
- 【规律】Farey Sums
[参考博客]: https://blog.csdn.net/meopass/article/details/82952087 Farey Sums 题目描述 Given a positive inte ...
- 【POJ 2478】 Farey Sequence
[题目链接] 点击打开链接 [算法] 不难看出,ans = phi(2) + phi(3) + .... + phi(n-1) + phi(n) 线性筛筛出欧拉函数,预处理前缀和,即可 [代码] #i ...
- Python高手之路【六】python基础之字符串格式化
Python的字符串格式化有两种方式: 百分号方式.format方式 百分号的方式相对来说比较老,而format方式则是比较先进的方式,企图替换古老的方式,目前两者并存.[PEP-3101] This ...
- 【原】谈谈对Objective-C中代理模式的误解
[原]谈谈对Objective-C中代理模式的误解 本文转载请注明出处 —— polobymulberry-博客园 1. 前言 这篇文章主要是对代理模式和委托模式进行了对比,个人认为Objective ...
- 【原】FMDB源码阅读(三)
[原]FMDB源码阅读(三) 本文转载请注明出处 —— polobymulberry-博客园 1. 前言 FMDB比较优秀的地方就在于对多线程的处理.所以这一篇主要是研究FMDB的多线程处理的实现.而 ...
- 【原】Android热更新开源项目Tinker源码解析系列之一:Dex热更新
[原]Android热更新开源项目Tinker源码解析系列之一:Dex热更新 Tinker是微信的第一个开源项目,主要用于安卓应用bug的热修复和功能的迭代. Tinker github地址:http ...
- 【调侃】IOC前世今生
前些天,参与了公司内部小组的一次技术交流,主要是针对<IOC与AOP>,本着学而时习之的态度及积极分享的精神,我就结合一个小故事来初浅地剖析一下我眼中的“IOC前世今生”,以方便初学者能更 ...
随机推荐
- Qt 国际化之二:多国语界面动态切换的实现
第一步在你的pro里面加入 TRANSLATIONS = myexec_zh.ts (根据对应的ts文件修改)第二步用lupdate 操作pro 将要翻译的提取到ts文件 命令是 lupdate my ...
- java String的比较,BOX装箱拆箱,以及面向对象的小代码
package cn.hncu.day2; public class StringDemo { public static void main(String[] args) { String str1 ...
- XC通讯录
XC通讯录基于Android4.4开发的一个手机通讯录,具有手机拨号,添加联系人,查看联系人,管理编辑联系人,智能查找联系人,删除及批量删除,备份/还原数据,以及手机联系人导入等功能,界面简洁美观,欢 ...
- CentOS7安装使用MySQL
安装MySQL 添加mysql源 # rpm -Uvh http://repo.mysql.com//mysql57-community-release-el7-7.noarch.rpm 安装mysq ...
- C#入门教程(三)–接收用户输入、转义字符、类型转换-打造C#入门教程
上次教程主要讲解了visual stdio快捷键.变量相关的知识.具体教程戳这里:http://www.chengxiaoxiao.com/net/1027.html 越来越深入去写教程越来越发现,自 ...
- 对于EditText的详细用法
EditText这个控件对于每一个Android开发者来说都是再熟悉不过了,但是,为什么有的人的EditText可以表现的那么好看,而刚入学Android的程序员来讲却丑到爆.这就充分的说明对于Edi ...
- SQL分页语句总结
今天对分页语句做一个简单的总结,他们大同小异的,只要理解其中一个其他的就很好理解了. 使用top选项 selecttop10*from Orders a where a.orderid notin(s ...
- Cisco AnyConnect “Failed to initialize connection subsystem”的解决方案
Per Cisco: Microsoft has released a fix-it patch providing a workaround for this issue. See KB# 3023 ...
- CATransform3DRotate 实现左右,上下翻转效果
CGFloat m34 = 800; CGFloat value = -40://(控制翻转角度) CGPoint point = CGPointMake(0.5, 0.5);//设定翻转时的 ...
- C++关于编译器合成的默认构造函数
有两个常见的误解: 1.任何类如果没有定义默认构造函数,就会被合成出一个来. 2.编译器合成的默认构造函数会显式地设定类内每一个数据成员的默认值. 对于第一个误解,并不是任何类在没有显式定义默认构造函 ...