欧拉函数(模板,相关问题持续更新中)

欧拉函数是一个很有用的东东。可以被扩展用来解决许多与素数相关的问题,逆元问题,欧拉函数降幂等!

概念:欧拉函数是小于或等于n的正整数中与n互质的数的数目(特别地φ(1)=1),若n为质数可直接根据性质得出,否则的话要求解。

求解模板:

 1 int Euler(int n)
 2 {
 3     if(n==1) return 1;
 4     int ans=n;
 5
 6     for(int i=2;i*i<=n;++i)
 7     {
 8         if(n%i==0)
 9         {
10             while(n%i==0) n/=i;
11             ans=ans/i*(i-1);
12         }
13     }
14     if(n!=1) ans=ans/n*(n-1);
15
16     return ans;
17 }

欧拉函数求逆元:51nod1256

 1 #include <iostream>
 2 #include <stdio.h>
 3 #include <string.h>
 4 using namespace std;
 5 typedef long long ll;
 6 int mod;
 7
 8 int Qpow(llo a,llo b)
 9 {
10     int r=1;
11     while(b)
12     {
13         if(b&1)r=r*a%mod;
14         a=a*a%mod;
15         b>>=1;
16     }
17
18     return r;
19 }
20
21 int Euler(int n)
22 {
23     if(n==1) return 1;
24     int ans=n;
25
26     for(int i=2;i*i<=n;++i)
27     {
28         if(n%i==0)
29         {
30             while(n%i==0) n/=i;
31             ans=ans/i*(i-1);
32         }
33     }
34     if(n!=1) ans=ans/n*(n-1);
35
36     return ans;
37 }
38
39 int main()
40 {
41     int a,b;
42     cin>>a>>b;
43     mod=b;
44
45     //llo ans=Qpow(a,mod-2);// mod质数
46     int ans=Qpow(a,Euler(mod)-1);
47     cout<<ans<<endl;
48
49     return 0;
50 }

完。

原文地址:https://www.cnblogs.com/redblackk/p/9735426.html

时间: 2024-10-14 06:51:30

欧拉函数(模板,相关问题持续更新中)的相关文章

hdu2824 The Euler function 筛选法求欧拉函数模板题

//求a , b范围内的所有的欧拉函数 //筛选法求欧拉函数模板题 #include<cstdio> #include<cstring> #include<iostream> using namespace std ; const int maxn = 3000010 ; typedef __int64 ll ; int e[maxn] ; int a ,  b ; void Euler() { int i,j; for (i=1;i<maxn;i++) e[i]

HDU 1286 找新朋友(欧拉函数模板)

HDU 1286 找新朋友 题意:中文题. 思路:欧拉函数的纯模板题,没什么好说的,主要是理解欧拉函数的意义. 在数论,对正整数n,欧拉函数是少于或等于n的数中与n互质的数的数目.此函数以其首名研究者欧拉命名,它又称为Euler's totient function.φ函数.欧拉商数等. 例如φ(8)=4,因为1,3,5,7均和8互质.   ----by度娘. #include <stdio.h> int eular(int n){ int ret = 1; for(int i = 2; i*

X86&Windows 相关链接....持续更新中....

链接说明 链接 备注 qboot是一个小型快速的Bios https://github.com/bonzini/qboot SeaBois是Bochs使用的Bois http://www.seabios.org/Releases#SeaBIOS_1.8.0 X86&Windows 相关链接....持续更新中....

数论 - 欧拉函数模板题 --- 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

P2158 [SDOI2008] 仪仗队(欧拉函数模板)

题目描述 作为体育委员,C君负责这次运动会仪仗队的训练.仪仗队是由学生组成的N * N的方阵,为了保证队伍在行进中整齐划一,C君会跟在仪仗队的左后方,根据其视线所及的学生人数来判断队伍是否整齐(如下图). 现在,C君希望你告诉他队伍整齐时能看到的学生人数. 分析就不写了都写得很<<<<全>>>>了就当看模板叭 #include<iostream> #include<cstdio> using namespace std; typede

欧拉函数模板

//直接求解欧拉函数int euler(int n){ //返回euler(n)      int res=n,a=n;     for(int i=2;i*i<=a;i++){         if(a%i==0){             res=res/i*(i-1);//先进行除法是为了防止中间数据的溢出              while(a%i==0) a/=i;         }     }     if(a>1) res=res/a*(a-1);     return re

欧拉函数模板及例题整理

欧拉函数定义:小于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; }

HDU 4983 Goffi and GCD(欧拉函数模板)

Problem Description: Goffi is doing his math homework and he finds an equality on his text book: gcd(n−a,n)×gcd(n−b,n)=n^k. Goffi wants to know the number of (a,b) satisfy the equality, if n and k are given and 1≤a,b≤n. Note: gcd(a,b) means greatest

(hdu step 7.2.1)The Euler function(欧拉函数模板题——求phi[a]到phi[b]的和)

题目: The Euler function Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 166 Accepted Submission(s): 96   Problem Description The Euler function phi is an important kind of function in number theory