CINTA 作业三


  1. 设 p=23p=23p=23 和 a=3a=3a=3,使用费马小定理计算 a2019modpa^{2019}\mod pa2019modp ?

    由题意可知:
    a2019modp⟺322∗91+17≡317(mod23)a^{2019}\mod p\iff 3^{22*91+17}\equiv 3^{17}(\mod 23)a2019modp⟺322∗91+17≡317(mod23)

    又有:317≡3−5(mod23)3^{17}\equiv 3^{-5}(\mod 23)317≡3−5(mod23)

    设 c=3c=3c=3 则有:cc−1≡1(mod23)cc^{-1}\equiv 1(mod 23)cc−1≡1(mod23)

    由扩展欧几里得定理得:c−1=8c^{-1}=8c−1=8

    又因为 gcd(8,23)=1gcd(8,23)=1gcd(8,23)=1 ,可以得到:
    原式为:85mod23=168^5\mod 23=1685mod23=16

  2. 使用费马小定理求解同余方程 x50≡2(mod17)x^{50}\equiv 2(\mod 17)x50≡2(mod17)。

    由题意得:
    x50mod17⟺x3∗16+2≡x2(mod17)x^{50}\mod 17\iff x^{3*16+2}\equiv x^2(\mod 17)x50mod17⟺x3∗16+2≡x2(mod17)

    所以原式为:x2≡2(mod17)x^2\equiv 2(\mod 17)x2≡2(mod17)

    那么:x2−2=k∗17(k∈Z)x^2-2=k*17(k\in Z)x2−2=k∗17(k∈Z)

    所以当k为2时:x=±6x=\pm 6x=±6

  3. 请证明 13 整除 270+3702^{70}+3^{70}270+370

    要证:13∣(270+370)13 | (2^{70}+3^{70})13∣(270+370)

    只需证:270+370≡0(mod13)2^{70}+3^{70}\equiv 0(\mod 13)270+370≡0(mod13)

    因为 gcd(2,13)=gcd(3,13)=1gcd(2,13)=gcd(3,13)=1gcd(2,13)=gcd(3,13)=1:

    所以原式可以等价为:(270mod13)+(370mod13)(2^{70}\mod 13)+(3^{70}\mod 13)(270mod13)+(370mod13)

    再由费马小定理得原式为:(2−2mod13)+(3−2mod13)(2^{-2}\mod 13)+(3^{-2}\mod 13)(2−2mod13)+(3−2mod13)

    由拓展欧几里得定理得 2 和 3 的乘法逆元:分别为 -6 和 -4

    那么原式又变作:(36mod13)+(16mod13)(36\mod 13)+(16\mod 13)(36mod13)+(16mod13)

    由同模数加法得原式为:52mod13=052\mod 13=052mod13=0

    综上所述: 13 整除 270+3702^{70}+3^{70}270+370

  4. 使用欧拉定理计算 2100000mod552^{100000}\mod 552100000mod55

    由原式可知:
    p=55,pp=55, pp=55,p 不为素数

    但 p=5∗11p=5*11p=5∗11 二者均为素数

    那么,ϕ(5)=5−1=4\phi(5)=5-1=4ϕ(5)=5−1=4 ,而 ϕ(11)=11−1=10\phi(11)=11-1=10ϕ(11)=11−1=10

    再有 gcd(5,11)=1gcd(5,11)=1gcd(5,11)=1

    由欧拉 PhiPhiPhi 公式:
    ϕ(55)=ϕ(5)∗ϕ(11)=40\phi(55)=\phi(5)*\phi(11)=40ϕ(55)=ϕ(5)∗ϕ(11)=40

    因为 gcd(2,55)=1gcd(2,55)=1gcd(2,55)=1 得:2100000≡2100000modϕ(55)(mod55)2^{100000}\equiv 2^{100000\mod\phi(55)}(\mod 55)2100000≡2100000modϕ(55)(mod55)

    所以原式为:2100000≡20(mod55)=12^{100000}\equiv 2^0(\mod 55)=12100000≡20(mod55)=1

  5. 手动计算 710007^{1000}71000 的最后两个数位等于什么?

    由题意知:所求数为 71000mod1007^{1000}\mod 10071000mod100

    据欧拉定理:ϕ(100)=ϕ(4)∗ϕ(25)=40\phi(100)=\phi(4)*\phi(25)=40ϕ(100)=ϕ(4)∗ϕ(25)=40

    因为 gcd(7,100)=1gcd(7,100)=1gcd(7,100)=1 得:71000≡71000modϕ(100)(mod100)7^{1000}\equiv 7^{1000\mod\phi(100)}(\mod 100)71000≡71000modϕ(100)(mod100)

    所以结果为:71000mod=17^{1000}\mod=171000mod=1 ,最后两个数位为: 01

  6. 编写 Python 语言程序完成欧拉 PhiPhiPhi 函数的计算,即输入正整数 nnn,计算并返回 ϕ(n)\phi(n)ϕ(n)。

import math# 朴素的欧拉函数def classic_Euler(n):num = 1for i in range(2, n):if math.gcd(i, n) == 1:num += 1return num# 优化欧拉函数def obb_judge(n):li = []for num in range(2, n + 1):flag = 0for i in range(2, int(math.sqrt(num)) + 1):if num % i == 0:flag = 1# print('{} % {} == {}'.format(num, i, num % i))if flag == 0:li.append(num)return lidef new_Euler(n):p = obb_judge(n)if n in p:return n - 1else:ret = 0 + nfor i in range(0, len(p)):if ret % p[i] == 0:n -= n // p[i]# print('n: ',n)while ret % p[i] == 0:ret //= p[i]# print('ret: ',ret)return n
  1. 设 ppp 是素数,计算 (p−1)!modp(p-1)!\mod p(p−1)!modp,并找出规律,写成定义,并给出证明。
# 测试计算使用代码
import mathdef obb_judge(n):li = []for num in range(2, n + 1):flag = 0for i in range(2, int(math.sqrt(num)) + 1):if num % i == 0:flag = 1# print('{} % {} == {}'.format(num, i, num % i))if flag == 0:li.append(num)return lidef factorial(m):re = 1for i in range(1, m + 1):re *= ireturn redef fac_to_mode(p):if p in obb_judge(p):return factorial(p - 1) % pelse:return -1if __name__ == '__main__':m = eval(input('p: '))for j in range(2, m):if fac_to_mode(j) != -1:print('#{}: {}'.format(j, fac_to_mode(j)))

【补充】这里发现一个令人疑惑的地方,直接使用 in range (2,int(math.sqrt(n))+1) 的条件会误判 5、7、11等等数为因子的倍数为素数,因此这里使用上一段代码的判定方式。

# 运行结果:
p: 128
#2: 1
#3: 2
#5: 4
#7: 6
#11: 10
#13: 12
#17: 16
#19: 18
#23: 22
...
#103: 102
#107: 106
#109: 108
#113: 112
#127: 126

这里我们发现对 (p−1)!modp=p−1(p-1)!\mod p = p-1(p−1)!modp=p−1 于是原问题变为:求证:当 ppp 为素数时, (p−1)!≡(p−1)(modp)(p-1)!\equiv(p-1)(\mod p)(p−1)!≡(p−1)(modp) 且只当 ppp 为素数时(威尔逊定理)

证明:
(1) ppp 为素数时,总有 (p−1)!≡(p−1)(modp)(p-1)!\equiv(p-1)(\mod p)(p−1)!≡(p−1)(modp)

(p−1)!≡(p−1)(modp)(p-1)!\equiv(p-1)(\mod p)(p−1)!≡(p−1)(modp) 与 (p−1)!≡−1(modp)(p-1)!\equiv{-1}(\mod p)(p−1)!≡−1(modp) 等同
对于 p=2p=2p=2 此结论总成立
对于 p=3p=3p=3 此结论也显然成立

而其余质数 ppp 满足 pmod2=1,p≥5p\mod 2=1, p\geq 5pmod2=1,p≥5 :
假设一数 1<a≤(p−1)1 < a \leq (p-1)1<a≤(p−1) (因为 aaa 总是在此区间内存在 [ppp 为素数])
那么:a∈M(M={x∣2≤x≤(p−2)})a\in M (M=\{x|2\leq x\leq (p-2)\})a∈M(M={x∣2≤x≤(p−2)})
再设:N={y∣y=x∗a,x∈M}N=\{y|y=x*a,x\in M\}N={y∣y=x∗a,x∈M}
那么显然可知:由 M→NM \to NM→N 是双射的(当 aaa 是常数时)
设方程 x∗a≡1(modp)x*a\equiv 1(\mod p)x∗a≡1(modp) ,由以上结论可知:
我们只能找到一个 xxx 与一个 aaa 一一对应此方程:x∗a≡1(modp)x*a\equiv 1(\mod p)x∗a≡1(modp)
所以有以下所有方程:
1∗a1modp=11*a_1\mod p =11∗a1​modp=1
2∗a2modp=12*a_2\mod p=12∗a2​modp=1

(p−2)∗ap−2modp=1(p-2)*a_{p-2}\mod p=1(p−2)∗ap−2​modp=1
又因 ppp 为素数:
所以总有:gcd(ai,p)=1gcd(a_i,p)=1gcd(ai​,p)=1
那么对于上述方程都有:n∗an≡n(modp)n*a_n\equiv n(\mod p)n∗an​≡n(modp)
对于所有 nnn 都有 gcd⁡(n,p)=1\gcd(n,p)=1gcd(n,p)=1
所以由乘法原理:(p−1)!≡(p−1)(modp)(p-1)!\equiv(p-1)(\mod p)(p−1)!≡(p−1)(modp) 成立
原式得证

(2) (p−1)!≡(p−1)(modp)(p-1)!\equiv(p-1)(\mod p)(p−1)!≡(p−1)(modp) 成立时,ppp 为素数
假设:ppp 不为素数,那么必然有 ∃a,b≤p\exist a, b\leq p∃a,b≤p
那么:原式为 (p−1)!=1∗2∗3∗...∗a∗...∗b∗...∗(p−1)modp(p-1)!=1*2*3*...*a*...*b*...*(p-1)\mod p(p−1)!=1∗2∗3∗...∗a∗...∗b∗...∗(p−1)modp
因此其中总存在:gcd⁡(a∗b,p)≠1\gcd(a*b,p)\neq 1gcd(a∗b,p)=1
所以总有:(p−1)!≡0(modp)(p-1)!\equiv0(\mod p)(p−1)!≡0(modp)
与原式等同的 (p−1)!≡−1(modp)(p-1)!\equiv{-1}(\mod p)(p−1)!≡−1(modp) 不符
所以 ppp 必然为素数

费马小定理和欧拉定理作业相关推荐

  1. 密码学基础——辗转相除法,费马小定理,欧拉定理,裴蜀定理,中国剩余定理

    文章主要根据百度百科和维基百科相关相关知识点整理而成! 辗转相除法 辗转相除法, 又名欧几里德算法(Euclidean algorithm),是求最大公约数的一种方法.它的具体做法是:用较小数除较大数 ...

  2. 三个重要的同余式——威尔逊定理、费马小定理、欧拉定理 + 求幂大法的证明

    一.威尔逊定理 若p为质数,则 p|(p-1)!+1 亦:(p-1)! ≡ p-1 ≡ -1(mod p) 例题: HDU 2973 YAPTCHA (威尔逊定理及其逆定理) 解题报告见http:// ...

  3. 逆元的几种求法(扩展欧几里得,费马小定理或欧拉定理,特例,打表等)

    乘法逆元 对于缩系中的元素,每个数a均有唯一的与之对应的乘法逆元x,使得ax≡1(mod n) 一个数有逆元的充分必要条件是gcd(a,n)=1,此时逆元唯一存在 逆元的含义:模n意义下,1个数a如果 ...

  4. 费马小定理与欧拉定理 原理与证明

    一.欧拉定理 1.定义 若a与n互质,则aφ(n)≡1a^{\varphi (n)} \equiv 1aφ(n)≡1 (mod n). 其中φ(n)\varphi (n)φ(n)指欧拉函数:小于n的正 ...

  5. 费马小定理与欧拉定理

    费马小定理 假如p是质数,且gcd(a,p)=1,那么 a^(p-1)≡1(mod p) 欧拉定理 gcd(a,n)=1,则 a^≡1(mod p) 其中,是欧拉函数 欧拉定理证明 模m的同余类共有m ...

  6. 费马小定理、欧拉定理与扩展欧拉定理(含证明)

    这里就以自己做好的PPT图片的形式给出了:

  7. 欧拉定理 费马小定理

    前言 学基础数论的时候看过证明,然而很快就忘了,最近在学习高深一点的数论,于是再复习一下欧拉定理和费马小定理. 欧拉定理 内容 若正整数 \(a,n\) 互质,则 \(a^{\varphi(n)}\e ...

  8. 数论杂谈(欧拉定理与费马小定理结论与应用)

    文章目录 欧拉定理: 欧拉定理性质: 扩展欧拉定理: 费马小定理: 指数循环节 费马大定理 逆元: 例题 原根 定义: 原根存在条件 例题 快速幂 代码 矩阵快速幂 原理: 代码: 欧拉定理: aφ( ...

  9. 初等数论四大定理(威尔逊定理,欧拉定理,费马小定理,中国剩余定理)

    初等数论四大定理 1. 威尔逊定理 (1) 结论 当且仅当ppp为素数时,(p−1)!≡−1(modp)(p-1)!\equiv -1(\mod p)(p−1)!≡−1(modp). (2) 证明 充 ...

  10. 欧拉定理与费马小定理

    一.互质与欧拉函数 互质:   ∀a,b∈N\forall a, b \in N∀a,b∈N,如果 gcd(a, b) = 1,则称 a, b 互质.   对于三个或以上的数,我们把 gcd(a, b ...

最新文章

  1. 金融数据分析(四)-------矩,偏度,峰度
  2. 单应矩阵(Homography)基本概念和代码测试
  3. python os模块详细_Python文件系统功能--os模块详解
  4. 11.24杭州沙龙预告:数据化经营,智能化决策
  5. Linux安装Kibana
  6. Ubuntu 运行Asp.net MVC3
  7. [深度学习-NLP]Imdb数据集情感分析之模型对比(贝叶斯, LSTM, GRU, TextCNN, Transformer, BERT)
  8. 细说.NET中的多线程 (四 使用锁进行同步)
  9. 用Python在图片上添加注释信息
  10. Java中多态的一些简单理解
  11. adult Income 一个人的年收入是由各种因素造成的。直观上,它受个人的教育水平、年龄、性别、职业等因素的影响。
  12. leetcode88
  13. 开源库uthash第一弹uthash.h
  14. libGDX-5:文本显示 BitmapFont 和 工具 hiero
  15. 56-狂拍灰太狼游戏
  16. 软件工程实体-联系图
  17. WPF做的金山词霸页面
  18. 【SIGGRAPH】用【有说服力的照片真实】技术实现最终幻想15的视觉特效
  19. 好不容易说明白AQS,面试官却还要我说应用场景,我只好又讲了CountDownLatch ~~~
  20. 为什么大学生活这么充实(累)

热门文章

  1. html流控破解脚本,tc 流控脚本
  2. linux cd是什么目录,linux cd是什么意思?
  3. matlab里支持向量机SVM实例1葡萄酒分类
  4. CSS 中的@media
  5. Latex --- 加三级子标题,解决没有编号问题(已解决)(加头文件即可)
  6. EFCore-脚手架Scaffold发生Build Failed问题的终极解决
  7. linked list C++实现
  8. minus oracle 顺序_Minus 在oracle 中的用法
  9. callable的使用方法详解
  10. codevs 切糕 网络流