怕忘了……

欧拉函数 定义、证明、打表方法

欧拉定理 定义、证明

https://blog.csdn.net/zzkksunboy/article/details/73061013

剩余系、完系、简系

证明相当精彩!

而1~a*b中关于a*b的每个系有且仅有一个。

勿忘:积性函数指对于所有互质的整数a和b有性质f(ab)=f(a)f(b)的数论函数。

====================================================================

https://blog.csdn.net/u014074562/article/details/50990326

a^b%c

在b非常大时的情况,

[前提 (a,c)=1]

因为a^phi(c)%c = 1

a^b%c=a^(b%phi(c))%c

c为素数时,phi(c)=c-1。

[无前提]

b>=phi(c)时,a^b%c=a^(b%phi(c)+phi(c))%c

b<phi(c)时,a^b%c=a^(b%phi(c))%c (前面的定理不一定正确)

证明:

https://www.luogu.org/problemnew/solution/P5091

例子:

a=d c=d^e b=d^f e>f

如a=2 b=1024 c=2

P5091 【模板】欧拉定理

 #include <cstdio>
#include <cstdlib>
#include <cmath>
#include <cstring>
#include <string>
#include <algorithm>
#include <iostream>
using namespace std;
#define ll long long const double eps=1e-;
const ll inf=1e9;
const ll mod=1e9+;
const int maxn=1e6+;
//const int maxlen=2e7+10; int phi[maxn],zhi[maxn],cnt_zhi;
bool vis[maxn];
int maxv=1e6;
//char str[maxn]; ll mul(ll a,ll b,ll m)
{
ll y=;
while (b)
{
if (b&)
y=y*a%m;
a=a*a%m;
b>>=;
}
return y;
} int main()
{
///互质:它们的公因数只有1
///i=1~m的phi(i) 顺便求出 bool use=;
int i,j,k,a,b,m;
char c;
phi[]=;///
for (i=;i<=maxv;i++)
{
if (!vis[i])
{
zhi[++cnt_zhi]=i;
phi[i]=i-;
}
for (j=;j<=cnt_zhi;j++)
{
k=i*zhi[j];
if (k>maxv)
break;
vis[k]=;
if (i%zhi[j]==)
{
phi[k]=phi[i]*zhi[j];
break;
}
else
phi[k]=phi[i]*(zhi[j]-);
}
} scanf("%d%d ",&a,&m);
b=;
while ((c=getchar())!=EOF)
{
if (!(c>= && c<=))
break; b=b*+c-;
if (b>=phi[m])
use=;
b=b%phi[m];
// b=(b*10+c-48)%phi[m];
} if (use)
printf("%lld",mul(a,b+phi[m],m));
else
printf("%lld",mul(a,b,m));
return ;
}
/*
2 12 8
2 5 3
*/

Advanced:

学习 快速幂&龟速乘&快速乘

https://blog.csdn.net/Cyan_rose/article/details/83065026

------------------------------------

a/b%c

b,c互质

则a/b 与 a^[phi(c)-1] 模c的结果是一致的 [a^phi(c) mod c = 1]

a/b%c=a^[phi(c)-1]%c

对于任意情况:

针对的a是特别大,b、c较小的情况

a/b%c=(a%bc)/b

证明:把a设为bc*x + b*y +z的形式 (x尽量大,然后是y尽量大,x,y,z>=0)

=============================

最后推荐:

https://www.cnblogs.com/zwfymqz/p/6740325.html

一些数论题目的模板

欧拉定理、欧拉函数、a/b%c的更多相关文章

  1. 2^x mod n = 1(欧拉定理,欧拉函数,快速幂乘)

    2^x mod n = 1 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Tot ...

  2. HDU4549 M斐波那契数列 矩阵快速幂+欧拉函数+欧拉定理

    M斐波那契数列 Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others)Total Sub ...

  3. 数论的欧拉定理证明 &amp; 欧拉函数公式(转载)

    欧拉函数 :欧拉函数是数论中很重要的一个函数,欧拉函数是指:对于一个正整数 n ,小于 n 且和 n 互质的正整数(包括 1)的个数,记作 φ(n) . 完全余数集合:定义小于 n 且和 n 互质的数 ...

  4. BZOJ3884: 上帝与集合的正确用法(欧拉函数 扩展欧拉定理)

    Time Limit: 5 Sec  Memory Limit: 128 MBSubmit: 3860  Solved: 1751[Submit][Status][Discuss] Descripti ...

  5. XMU 1615 刘备闯三国之三顾茅庐(三) 【欧拉函数+快速幂+欧拉定理】

    1615: 刘备闯三国之三顾茅庐(三) Time Limit: 1000 MS  Memory Limit: 128 MBSubmit: 45  Solved: 8[Submit][Status][W ...

  6. 欧拉函数&&欧拉定理

    定义和简单性质 欧拉函数在OI中是个非常重要的东西,不知道的话会吃大亏的. 欧拉函数用希腊字母φ表示,φ(N)表示N的欧拉函数. 对φ(N)的值,我们可以通俗地理解为小于N且与N互质的数的个数(包含1 ...

  7. [洛谷P5106]dkw的lcm:欧拉函数+容斥原理+扩展欧拉定理

    分析 考虑使用欧拉函数的计算公式化简原式,因为有: \[lcm(i_1,i_2,...,i_k)=p_1^{q_{1\ max}} \times p_2^{q_{2\ max}} \times ... ...

  8. 欧拉函数&欧拉定理&降幂 总结

    欧拉函数&欧拉定理&降幂 总结 标签:数学方法--数论 阅读体验:https://zybuluo.com/Junlier/note/1300214 这年头不总结一下是真的容易忘,老了老 ...

  9. 数学基础IV 欧拉函数 Miller Rabin Pollard's rho 欧拉定理 行列式

    找了一些曾经没提到的算法.这应该是数学基础系最后一篇. 曾经的文章: 数学基础I 莫比乌斯反演I 莫比乌斯反演II 数学基础II 生成函数 数学基础III 博弈论 容斥原理(hidden) 线性基(h ...

随机推荐

  1. 微信小程序の模板

    一.什么是模板 模板顾名思义就是可以复用的代码块.减少编码工作量. 二.例子 <template name="templateTest"> <view>th ...

  2. Java的枚举类型使用方法详解

    1.背景在java语言中还没有引入枚举类型之前,表示枚举类型的常用模式是声明一组具有int常量.之前我们通常利用public final static 方法定义的代码如下,分别用1 表示春天,2表示夏 ...

  3. 前端学习(十九)jquery(笔记)

    jquery:库,框架 js,别人封装成的js 官网:http://jquery.com/ -----------------------------------1.7 ----------jq 1. ...

  4. Dubbox离线约束地址

    地址: http://code.alibabatech.com/schema/dubbo/dubbo.xsd

  5. 40th 要掀桌子么 还是尬坐吧

    今日学习精华:     面向对象编程里面有一句  非常经典的描述:-----通过类实例化一个对象,通过对象调方法-----   注意:对象调用的  方法 ,即 函数一定要有  参数      def  ...

  6. 浅谈无线h5开发

    最近一直在做h5的项目,对h5开发有了自己的理解.首先h5开发并不是指的html5的开发,而是指无线端的web开发,至于为什么叫h5开发,我觉得一方面是因为html5近几年还是挺受关注,另一方面h5在 ...

  7. git - Mac生成SSH key

    步骤1.检查是否已经存在SSH Key 打开电脑终端,输入以下命令: ls -al ~/.ssh 会出现两种情况 步骤2. 生成/设置SSH Key 继续上一步可能出现的情况 (1)情况一: 终端出现 ...

  8. AcWing 204. 表达整数的奇怪方式 (线性同余方程组)打卡

    给定2n个整数a1,a2,…,ana1,a2,…,an和m1,m2,…,mnm1,m2,…,mn,求一个最小的整数x,满足∀i∈[1,n],x≡mi(mod ai)∀i∈[1,n],x≡mi(mod  ...

  9. vue2 开发环境部署 及 打包配置

    一.脚手架工具(vue2 的脚手架工具是 vue-cli) 1.脚手架工具的安装 参考  :  https://blog.csdn.net/wulala_hei/article/details/804 ...

  10. s13 day3作业

    ha_proxy配置文件修改程序ha_file 为存储配置信息的文件.运行的时候对该文件进行操作.1.查询信息:用户输入域名,获得域名相关信息2.修改配置文件:用户输入的格式应该为 {"ba ...