算法模板——单个值欧拉函数

输入N,输出phi(N)

这样的单个值欧拉函数程序一般见于部分数论题,以及有时候求逆元且取模的数不是质数的情况(逆元:A/B=A*Bphi(p)-1 (mod p),一般常见题中p是质数,phi(p)-1=p-2)

(Tip:我是来水经验的不解释,不过话说真的好久没写这个了TT)

 1 var i:int64;
 2 function Eula(x:int64):int64;
 3          var res:int64;i:longint;
 4          begin
 5               res:=x;
 6               for i:=2 to trunc(sqrt(x)) do
 7                   begin
 8                        if (x mod i)=0 then
 9                           begin
10                                res:=(res div i)*(i-1);
11                                while (x mod i)=0 do x:=x div i;
12                           end;
13                   end;
14               if x>1 then res:=(res div x)*(x-1);
15               exit(res);
16          end;
17 begin
18      readln(i);writeln(Eula(i));
19      readln;
20 end.      
时间: 2024-10-17 16:13:08

算法模板——单个值欧拉函数的相关文章

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

http://poj.org/problem?id=2478 求欧拉函数的模板. 初涉欧拉函数,先学一学它基本的性质. 1.欧拉函数是求小于n且和n互质(包括1)的正整数的个数.记为φ(n). 2.欧拉定理:若a与n互质,那么有a^φ(n) ≡ 1(mod n),经常用于求幂的模. 3.若p是一个质数,那么φ(p) = p-1,注意φ(1) = 1. 4.欧拉函数是积性函数: 若m与n互质,那么φ(nm) = φ(n) * φ(m). 若n = p^k且p为质数,那么φ(n) = p^k - p

欧拉函数phi值的计算模板

求小于n且与n互质的整数的个数.告诉你n的唯一分解式 我们可以运用容斥原理,先分别减去是p1,p2,p3..pn的倍数,再加上同时是他们素因子的个数,再减去3个……以此类推即可. 我们可以化简一下公式:f(x)=x*(1-1/p1)*(1-1/p2).....,其中p1,p2.....是n的素因子. 这就是大名鼎鼎的欧拉函数,然后我们可以用编程轻松的解决这个问题 运用求质数的方法,每次找到一个素因子,然后将它除净,就可以保证找到的因子都是素数 #include<bits/stdc++.h> u

算法模板——线性欧拉函数

实现功能:求出1-N的欧拉函数,然后应对若干个询问操作 其实就是个素数判定+欧拉函数性质的二合一 代码如下,我觉得应高不难懂,只要你知道欧拉函数的性质 var i,j,k,l,m,n:longint; a,b:array[0..10000005] of longint; procedure phi; var i,j:longint; begin m:=0;a[1]:=1; for i:=2 to n do begin if a[i]=0 then begin inc(m); b[m]:=i; a

欧拉函数模板及例题整理

欧拉函数定义:小于n且与n互素的数的个数 欧拉函数为积性函数,满足积性函数的性质,即可以通过n的素因子的函数值求得n的欧拉函数值 求值方式有两种,单个判断和打表 代码如下 int phi(int n) { int res=n; for(int i=2;i*i<=n;i++) { if(n%i==0) { res=res-res/i; while(n%i==0) n/=i; } } if(n>1) res=res-res/n; //可能还有大于sqrt(n)的素因子 return res; }

数论 - 欧拉函数模板题 --- poj 2407 : Relatives

Relatives Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 11372   Accepted: 5544 Description Given n, a positive integer, how many positive integers less than n are relatively prime to n? Two integers a and b are relatively prime if ther

数论快速入门(同余、扩展欧几里德、中国剩余定理、大素数测定和整数分解、素数三种筛法、欧拉函数以及各种模板)

数学渣渣愉快的玩了一把数论,来总结一下几种常用的算法入门,不过鶸也是刚刚入门, 所以也只是粗略的记录下原理,贴下模板,以及入门题目(感受下模板怎么用的) (PS:文中蓝色字体都可以点进去查看百度原文) 附赠数论入门训练专题:点我打开专题(题目顺序基本正常,用以配套数论入门) 一.同余定理 简单粗暴的说就是:若 a-b == m 那么 a%m == b%m 这个模运算性质一眼看出...直接上入门水题: Reduced ID Numbers 附AC代码(这个也没啥模板....知道就好) #inclu

欧拉函数性质以及模板

概念: 在数论,对正整数n,欧拉函数是小于n的数中与n互质的数的数目. 性质: ,其中p1, p2……pn为x的所有质因数,x是不为0的整数.φ(1)=1(唯一和1互质的数(小于等于1)就是1本身). (注意:每种质因数只一个.比如12=2*2*3那么φ(12)=12*(1-1/2)*(1-1/3)=4 若n是质数p的k次幂, ,因为除了p的倍数外,其他数都跟n互质. 设n为正整数,以 φ(n)表示不超过n且与n互 素的正整数的个数,称为n的欧拉函数值,这里函数 φ:N→N,n→φ(n)称为欧拉

算法复习——欧拉函数(poj3090)

题目: Description A lattice point (x, y) in the first quadrant (x and y are integers greater than or equal to 0), other than the origin, is visible from the origin if the line from (0, 0) to (x, y) does not pass through any other lattice point. For exa

POJ2407---Relatives(求单个数的欧拉函数)

Description Given n, a positive integer, how many positive integers less than n are relatively prime to n? Two integers a and b are relatively prime if there are no integers x > 1, y > 0, z > 0 such that a = xy and b = xz. Input There are several