数论基本定理和欧拉广义降幂公式
一. 威尔逊定理
当p为素数时,(p-1)!= -1(mod p)
其逆定理也成立,移项得:(p-1)! + 1 整除 p
二. 费马小定理
当gcd(a,p)= 1且p为素数时,a ^(p-1)= 1(mod p)
而a ^ 0 = 1(mod p),因此存在长度为p-1的循环节,费马降幂:a ^ b mod p = a ^(b mod p-1)mod p
三. 欧拉定理
当gcd(a,m)= 1时,
为小于m且与m互质数的个数,费马小定理就是欧拉定理的一种特殊情况
四. 裴蜀定理
任意对两个整数 A,B,设d它们的最大公约数
当且仅当m是d的倍数时,ax + by = m才有整数解
扩展欧几里得算法求解即可
1)计算值
① 先说明函数是积性函数,对于积性函数,若gcd(m,n)= 1,则
②对于素数p,在1到p ^ k中p,2p,3p ......(p ^ k-1),(k-1)个数与p ^ k不互质,因此
根据唯一分解定理,(pi为m的质因子),再根据上述两点得到
2)计算1到m所有数的欧拉值(欧拉筛+积性函数)
void Get_Eular()
{int n = 0;phi[1] = 1; for(int i=2;i<maxn;++i){if(!phi[i]) //i为素数{phi[i] = i-1; prime[n++] = i;}for(int j=0; j<n&&i*prime[j]<=maxn;++j){if(i%prime[j]==0){phi[i*prime[j]] = phi[i]*prime[j]; //i*prime[j]的素因子和i是一样的,只相当与上文中的m扩大了break;}else phi[i*prime[j]] = phi[i]*phi[prime[j]];//积性函数的性质,i与prime[j]互质}}
}
3)欧拉因子求和
假设n的因子为d1,d2 ...... di,则欧拉函数和,F(n)也是积性函数,对于素数p,那么p ^ k的因子就有p,p ^ 2,p ^ 3 ...... p ^ k,再结合公式②,得到,根据唯一分解定理,,有F(m)
4)互质数的和
在小于m的数中,与m互质的数的总和为: ,首先要知道若n与m互质,则m-n与m互质,所以在m> 1时,与m互质的数总是一对一对的出现,且每一对的和为m,总共对
5)欧拉广义降幂
不难发现:
当满足gcd(A,P)= 1时 , ,所以a^b:
(1)所以有:
(2)求 a ^ x % p,当 p 为质数时,如果 a 是 p 的倍数,直接输出0,否则可以直接降幂,即:x%phi(p),因为此时gcd(a,p) = 1
四. 欧拉广义降幂应用
1. BZOJ 3884
描述:
解:
观察上面的欧拉降幂就会发现这是一个递归,当phi()函数值为1时就递归结束,因为任何数对1取余都等于0,而幂为无穷,恒满足,所以:
代码:
#include<iostream>
using namespace std;
typedef long long LL;
LL Eular(LL p) //计算p的欧拉值
{LL ans = p;for(int i=2;i*i<=p;++i){if(p%i==0){ans = ans - ans/i;while(p%i==0)p /= i;}}if(p>1) ans = ans - ans/p;return ans;
}
LL quick_pow(LL a,LL x,LL p)
{LL ans = 1;while(x){if(x&1) ans = ans*a%p;a = a * a % p;x >>= 1;}return ans;
}
LL cal(LL p)
{LL mod = Eular(p);if(mod==1) return quick_pow(2,0+1,p);return quick_pow(2,cal(mod)+mod,p);
}
int main()
{LL p,t;cin>>t;while(t--){cin>>p;cout<<cal(p)<<endl;}
}
五. 经典例题
1. HDU 2973 (威尔逊定理)
2. HDU 3501 (互质数的和)
3. ICPC焦作网络赛(费马降幂)
4. codefores (欧拉降幂)
5. HDU 3221(欧拉降幂)
6. 牛客网 (裴蜀定理)
7. Codeforces Round#454(Div.1)D.Power Tower(欧拉降幂)
六. 说明
关于F(n)的的积性函数的证明
关于披(N)的积性函数的证明
关于欧拉降幂的证明
个人认为证明过程没必要过多纠结!
数论基本定理和欧拉广义降幂公式相关推荐
- Summer Training day4上帝与集合的正确用法 欧拉函数+降幂公式
这个题的指数太大了,因此要考虑用降幂公式进行降幂 记f(p) = 2^2^2... % p f(p) = 2^(2^2^2...%phi(p) + phi(p)) % p = 2^(f(phi(p)) ...
- 3884: 上帝与集合的正确用法 欧拉函数+降幂公式
Orz题解 降幂公式:a^x ≡a^(x modϕ(p)+ϕ(p)) (mod p) #include<iostream> #include<cstdio> #include& ...
- 数论 - 分解质因数+欧拉函数 - Relatives POJ - 2407
数论 - 分解质因数+欧拉函数 文章目录 数论 - 分解质因数+欧拉函数 一.分解质因数 二.欧拉函数 三.模板: Relatives POJ - 2407 一.分解质因数 由 算 术 基 本 定 理 ...
- 为何欧拉的质数公式会扰乱世界?
全文共1357字,预计学习时长4分钟 来源:Pexels 质数是现代加密学的基础. 原因很简单:到目前为止,人类还不了解它们的数学本质.但是,一旦揭开质数的神秘面纱,世界将发生巨大变化. 今天,小芯将 ...
- 数论讨伐!欧拉函数!
[欧拉函数] 任务开始. 什么是欧拉函数?我们又怎么求呢??? 此次任务的主要怪物:欧拉函数 (1)欧拉函数定义 欧拉函数嘛,当然是我们著名的莱昂哈德·欧拉发明的啦~那么他是怎么定义介个函数滴? 咳咳 ...
- 【BZOJ2818】Gcd,数论练习之欧拉筛
传送门 写在前面:比较简单的数论题目了 思路:对i来说,所有与i互质的数和i都乘同一个质数p,那么得到的两个数的gcd一定是p,所以我们就可以利用这个来搞一搞了,对1-n的phi预处理出来(欧拉筛), ...
- 陕西师范大学第七届程序设计竞赛网络同步赛 J 黑猫的小老弟【数论/法拉数列/欧拉函数】...
链接:https://www.nowcoder.com/acm/contest/121/J 来源:牛客网 题目描述 大家知道,黑猫有很多的迷弟迷妹,当然也有相亲相爱的基友,这其中就有一些二五仔是黑猫的 ...
- 数论数学:欧拉恒等式的证明
今天突然想到我应经写过泰勒展开了! 正好又遇到了欧拉恒等式,就顺便在博客上记录一下啦.. 题目: 试 证 明 : e π i + 1 = 0 试证明:e^{\pi i}+1=0 试证明:eπi+1=0 ...
- jzoj1164-求和【欧拉函数,数论】(筛欧拉函数模板)
正题 大意 给出一个nnn,求1∼n" role="presentation" style="position: relative;">1∼n1 ...
- 第二十六章 数论——欧拉函数(详解与证明)
第二十六章 数论--欧拉函数(详解与证明) 欧拉函数 1.互质 2.欧拉函数的定义 3.欧拉函数的公式 4.欧拉函数的证明 5.欧拉函数的使用 (1)问题一: 思路 代码 (2)问题二: 思路 cas ...
最新文章
- 2018.12.13待填之坑
- c++ class struct同名_第二课C到C++的关系
- IIS异常:CS0016: 未能写入输出文件“c:\WINDOWS\Microsoft.NET\Framework\.。。”--“拒绝访问...
- Oracle宣布终止所有Intel Itanium平台上的软件开发
- Java设计模式(七):适配器设计模式
- jQuery 学习之路(1):引子
- ROI Pooling层解析
- Python PIPEs
- vue 组件属性监听_vuejs组件内的对象属性监听问题
- python替换文件内容_使用python替换文件内容
- .NET中异常类(Exception)
- 远程连接Linux系统
- C语言两个数比较大小和三个数比较大小,代码
- Apache JMeter使用教程
- 如何对 List集合进行排序
- autoshape很多 excel_怎样清除excle中Autoshape_ExceL批注属性批量修改宏代码�9�3
- python-patterns
- html中input type什么意思,HTML中type是什么意思
- MT【306】圆与椭圆公切线段
- SLAM【十一】建图