uva10820 send a table (nlogn求1-n欧拉函数值模版

//重点就是求1-n的欧拉函数啦,重点是nlogn求法的版

//大概过程类似于筛选法求素数

 1 #include<cstdio>
 2 #include<iostream>
 3 #include<cmath>
 4 #include<algorithm>
 5 #include<cstring>
 6 #include<cstdlib>
 7 #include<queue>
 8 #include<vector>
 9 #include<map>
10 #include<stack>
11 #include<string>
12
13 using namespace std;
14
15 int n;
16 int phi[50001];
17 int f[50001];
18
19 int main(){
20     memset(phi,0,sizeof(phi));
21     memset(f,0,sizeof(f));
22     phi[1]=1;
23     for (int i=2;i<=50000;i++){
24             if (phi[i]==0){
25                     for (int j=i;j<=50000;j+=i){
26                             if (phi[j]==0) phi[j]=j;
27                             phi[j]=phi[j]/i*(i-1);
28                     }
29             }
30     }
31     for (int i=1;i<=50000;i++) f[i]=f[i-1]+phi[i];
32     while (scanf("%d",&n)==1){
33             if (n==0) return 0;
34             printf("%d\n",f[n]*2-1);
35     }
36     return 0;
37 }
38 /*
39 2
40 5
41 0
42 */

时间: 2024-10-25 02:36:35

uva10820 send a table (nlogn求1-n欧拉函数值模版的相关文章

UVA10820 send a table

题意:对(x,y),1<=x,y<=n 求出有多少对(x,y)互质 题解:筛法跑一遍欧拉就好了 #include <cstdio> #include <cstring> #include <iostream> #include <algorithm> using namespace std; typedef long long ll; ll phi[50001]; void init() { for(int i=1;i<=50000;i++

线性求欧拉函数值和筛选素数

2818: Gcd 题目: 给定整数N,求1<=x,y<=N且Gcd(x,y)为素数的 数对(x,y)有多少对. 1<=N<=10^7 算法: 求解 g = Gcd(x,y)为素数,转换问题成x/g,y/g互质.所以,只要求出[1,N/pi]内互质的对数(pi为1....N之间的素数).枚举pi就可以了.而这里就可以用到线性的欧拉求解,普通欧拉为O(nlognlogn). /* 线性素数加欧拉筛法O(N) 题目: 给定整数N,求1<=x,y<=N且Gcd(x,y)为素数

初等数论-Base-1(筛法求素数,欧拉函数,欧几里得算法)

前言 初等数论在OI中应用的基础部分,同机房的AuSquare和zhou2003君早就写完了,一直划水偷懒的Hk-pls表示很方,这才开始了这篇博客. $P.S.$可能会分部分发表. 筛法求素数 埃式筛素数 问题:求$[1,n]$中的所有素数 总体思路就是在$[2,n]$中每当我们找到一个新的素数,在把它加入我们的素数队列的同时我们把它的倍数全部打上标记(包括它自己),下一个没有被标记的数就是新的素数. void find_prime(int n){ memset(used,0,sizeof(u

POJ1284---Primitive Roots(求原根个数, 欧拉函数)

Description We say that integer x, 0 < x < p, is a primitive root modulo odd prime p if and only if the set { (xi mod p) | 1 <= i <= p-1 } is equal to { 1, -, p-1 }. For example, the consecutive powers of 3 modulo 7 are 3, 2, 6, 4, 5, 1, and t

POJ 2407-Relatives(求一个整数的欧拉函数值)

Relatives Time Limit:1000MS     Memory Limit:65536KB     64bit IO Format:%I64d & %I64u Submit Status Practice POJ 2407 Appoint description:  System Crawler  (2015-04-04) Description Given n, a positive integer, how many positive integers less than n

【poj2478-Farey Sequence】递推求欧拉函数-欧拉函数的几个性质和推论

http://poj.org/problem?id=2478 题意:给定一个数x,求<=x的数的欧拉函数值的和.(x<=10^6) 题解:数据范围比较大,像poj1248一样的做法是不可行的了. 首先我们要了解欧拉函数的几个性质和推论:(今天跟好基友Konjak魔芋讨论了好久..) 推论(一): phi(p^k)=(p-1)*p^(k-1) 证明: 令n=p^k,小于等于n的正整数数中,所有p的倍数共有p^k /p = p^(k-1)个. 1~n出去p的倍数,所以phi(n)= n -  p^

hdu 2837 Calculation【欧拉函数,快速幂求指数循环节】

欢迎关注__Xiong的博客: http://blog.csdn.net/acmore_xiong?viewmode=list Calculation Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 1912    Accepted Submission(s): 413 链接:click me Problem Description A

UVA12493 - Stars(求1-N与N互质的个数)欧拉函数

Sample Input 3 4 5 18 36 360 2147483647 Sample Output 1 1 2 3 6 48 1073741823 题目链接:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=3937 题目大意:圆上有N个点把圆分成N等分,求隔相同的点能一笔画完所有点的方法: 思考:要一笔画出,那么(N,K)必定没有在

一类欧拉函数相关的求和式推导

\(\\\) 写在前面 因为最近做了不少和欧拉函数相关的求和问题,而这一类求和的推导有没有涉及到反演和卷积,所以单独写一写. 给出的题目顺序与难度大致无关,是按照个人做题的顺序安排的. 再次声明欧拉函数的定义:\(\varphi(x)\) 表示 \([1,x]\) 里的所有整数中,与 \(x\) 互质的数的个数. 下面的叙述中均用 \((x,y)\) 表示 \(gcd(x,y)\) ,用 \([x,y]\) 表示 \(lcm(x,y)\) . \(\\\) 欧拉函数的两种常用求法 公式法,单点复