Farey Sequence

题意:给定一个数n,求在[1,n]这个范围内两两互质的数的个数。(转化为给定一个数n,比n小且与n互质的数的个数)

知识点:

欧拉函数:

普通求法:

int Euler(int n)
{
int ans=n;
for(int i=0;i<cnt&&prime[i]<=n;i++)
{
if(n%prime[i]==0)
{
ans=ans-ans/prime[i];
while(n%prime[i]==0)
n/=prime[i];
}
}
if(n==1)
return ans;
if(n>1)
return ans-ans/n; }

筛选法:(基于素数筛,跟着代码模拟一遍就懂)

void Init()
{
     for(int i=1;i<N;i++)
euler[i]=i;
for(int i=2;i<N;i++) //i=1时,euler[1] 不变
if(euler[i]==i)
for(int j=i;j<N;j+=i)
euler[j]=euler[j]/i*(i-1);
}

题解:筛选法求欧拉函数

#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
const int N=1e6+5; int euler[N]; void Init()
{
euler[1]=1;
for(int i=2;i<N;i++)
euler[i]=i;
for(int i=2;i<N;i++)
if(euler[i]==i)
for(int j=i;j<N;j+=i)
euler[j]=euler[j]/i*(i-1);
} int main()
{
Init();
int n;
while(cin>>n&&n)
{
long long ans=0;
for(int i=2;i<=n;i++)
ans+=euler[i];
cout<<ans<<endl;
}
}

poj2478 Farey Sequence (欧拉函数)的更多相关文章

  1. POJ2478 Farey Sequence —— 欧拉函数

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

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

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

  3. hdu1787 GCD Again poj 2478 Farey Sequence 欧拉函数

    hdu1787,直接求欧拉函数 #include <iostream> #include <cstdio> using namespace std; int n; int ph ...

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

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

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

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

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

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

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

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

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

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

  9. POJ2478 - Farey Sequence(法雷级数&&欧拉函数)

    题目大意 直接看原文吧.... The Farey Sequence Fn for any integer n with n >= 2 is the set of irreducible rat ...

随机推荐

  1. C#入门经典Lambda

    using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Lamb ...

  2. SQL分页查询的几种方式

    需求:查询表dbo.Message,每页10条,查询第2页 1:TOP() ) * FROM dbo.Message WHERE Code NOT IN () Code FROM dbo.Messag ...

  3. c# asp.net4.0尚未在web服务器上注册

    辗转无数论坛,感谢http://bbs.csdn.net/topics/390992746 microsoft官方文档: https://blogs.msdn.microsoft.com/webdev ...

  4. Lock、ReentrantLock、synchronized、ReentrantReadWriteLock使用

    先来看一段代码,实现如下打印效果: 1 2 A 3 4 B 5 6 C 7 8 D 9 10 E 11 12 F 13 14 G 15 16 H 17 18 I 19 20 J 21 22 K 23 ...

  5. gSOAP MTOM

    前言 需要准备的知识:wsdl,soap,gSOAP,C++,fidder. 首先介绍几个相关的概念 1.MTOM基础概念      MTOM(Message Transmission Optimiz ...

  6. tomcat之一:指定tomcat运行时JDK版本

    tomcat作为日常开发的web应用服务器,给开发测试带来了很多便利,tomcat的运行依赖JDK的支持,在安装JDK时经常会配置环境变量:JAVA_HOME.CLASSPAT,且需要添加path变量 ...

  7. 变通实现微服务的per request以提高IO效率(二)

    *:first-child { margin-top: 0 !important; } body>*:last-child { margin-bottom: 0 !important; } /* ...

  8. JS中用new创建对象与不用new创建对象区别:

    function classA() { console.log(this); var that = this == window ? {} : this; that.name = "clas ...

  9. 安全生产应急救援指挥系统之GIS一张图-flex/java

    开发语言是flex.java,开发平台是myeclise.eclise,后台数据库是oracel或sqlserver,开发接口是arcgis api for flex,提供以下的功能: 1.地图框选搜 ...

  10. Android编码规范04

    private final String MESSAGE_WARN = "您输入的密码有误,请重新输入!"; private final String CLASS_ONE = &q ...