首页 > 其他分享 >威尔逊定理

威尔逊定理

时间:2024-10-09 16:36:52浏览次数:8  
标签:定理 威尔逊 kn 啊啊啊 import mod

初识威尔逊定理

什么是威尔逊定理,即对于一个质数p来说,有

(p-1)! ≡ -1 (mod p)

恒成立,其逆定理也成立,即对于一个数p来说若满足上式,则p一定是素数。

于是通过这个性质我们能够得到素数分布的函数:

f(n) = sin(π*((n-1)!+1)/n)

当函数值为0时,对应n就是一个素数,但好像没用(确信。

推广有

(p-2)! ≡ 1 (mod p)

  至于证明,因为此处主要讨论威尔逊定理的含义和应用,所以不再赘述证明过程。

例题:[长安杯 2021]checkin

附件:

from Crypto.Util.number import *
from secret import flag
p = getPrime(1024)
q = getPrime(16)
n = p*q
m = bytes_to_long(flag)
for i in range(1,p-q):
    m = m*i%n
e = 1049
print(pow(2,e,n))
print(pow(m,e,n))
#4513855932190587780512692251070948513905472536079140708186519998265613363916408288602023081671609336332823271976169443708346965729874135535872958782973382975364993581165018591335971709648749814573285241290480406050308656233944927823668976933579733318618949138978777831374262042028072274386196484449175052332019377
#3303523331971096467930886326777599963627226774247658707743111351666869650815726173155008595010291772118253071226982001526457616278548388482820628617705073304972902604395335278436888382882457685710065067829657299760804647364231959804889954665450340608878490911738748836150745677968305248021749608323124958372559270

​思路:

由2**e得出kn,再去爆破q,kn//q得到kp,分解kp得到p(根据比特大概看看就行),mm = m*(p-q-1)!,要消去这个阶乘,所以把m乘到(p-1)!,得到m*(p-1)!-m (mod p) ,最后逆元消-1。

​exp:

from Crypto.Util.number import *
from gmpy2 import *
from sympy import *

e = 1049
c = 3303523331971096467930886326777599963627226774247658707743111351666869650815726173155008595010291772118253071226982001526457616278548388482820628617705073304972902604395335278436888382882457685710065067829657299760804647364231959804889954665450340608878490911738748836150745677968305248021749608323124958372559270
c2 = 4513855932190587780512692251070948513905472536079140708186519998265613363916408288602023081671609336332823271976169443708346965729874135535872958782973382975364993581165018591335971709648749814573285241290480406050308656233944927823668976933579733318618949138978777831374262042028072274386196484449175052332019377

kn = 2**e - c2
for i in range(2**15,2**16):
    if(isprime(i)):
        if(kn%i == 0):
            q = i
            kp = kn//i
            break

p = 170229264879724117919007372149468684565431232721075153274808454126426741324966131188484635914814926870341378228417496808202497615585946352638507704855332363766887139815236730403246238633855524068161116748612090155595549964229654262432946553891601975628848891407847198187453488358420350203927771308228162321231
n = p*q
phi = (p-1)*(q-1)
d = inverse(e,phi)
m = pow(c,d,n)
for i in range(p - q , p ):
    m = ( m * i ) % p
m = m * inverse(-1,p) % p
print(long_to_bytes(m))

 

啊啊啊啊啊啊数论啊啊啊啊啊啊啊

标签:定理,威尔逊,kn,啊啊啊,import,mod
From: https://www.cnblogs.com/snoozy/p/18454561

相关文章

  • 威尔逊定理
    测试一下\[(A−1)!≡ −1 mod A\]其中A为素数1.从代码中可以知道:p=(B1!)%A1p=(B1!)%A1q=(B2!)%A2q=(B2!)%A22.又由[威尔逊定理](A−1)!≡ −1 mod3.而B=A-random.randint(1e3,1e5),所以在B的前面补上(A−1)(A−2)(A−3)...(B+1)就有(A−1)(A−2)(A−3).......
  • 快乐数学2勾股定理0000000
    2勾股定理在任意一个直角三角形中,两条直角边的平方和等于斜边的平方。a²+b²=c²a和b分别表示直角三角形的两条直角边长度。c表示斜边长度。我们大多数人都认为这个公式只适用于三角形和几何图形。勾股定理可用于任何形状,也可用于任何将数字平方的公式。2.1了......
  • 二项式定理来源
    这是国庆作业。很巧的是我的二项式定理学习笔记正好是去年国庆时写的。因为是发视频作业,所以这算是稿子。在中国,成书于1世纪的《九章算术》提出了世界上最早的多位正整数开平方、开立方的一般程序。11世纪中叶,贾宪在其《释锁算书》中给出了“开方作法本原图”,满足了三次以上开......
  • 行列式求法和矩阵树定理
    1.矩阵树定理无向图,有n个点,如果说i-j之间有连边,那么矩阵g[i][j]=g[j][i]=-1(i-j之间的边的数量),否则值为0矩阵上对角线上的值为该点的度数,g[i][i]=d[i];生成树个数:任选i,去掉i行i列之后的行列式的值生成树的权值=边权的乘积,所有生成树的权值之和?i-j之间右边,g[i][j]=......
  • 介值定理
    什么是介值定理?介值定理(IntermediateValueTheorem,简称IVT)是微积分中的一个基本定理。简单来说,介值定理告诉我们,如果一个函数在一个区间上是连续的,那么这个函数会“覆盖”该区间内所有介于其端点函数值之间的值。定理的正式表述:如果函数$f$在闭区间\([a,b]\)上连续,且$......
  • 算术基本定理
    一个整数可以被表示成若干质数的乘积。例如:\(48=2^4\times3,\49=7^2,\50=2\times5^2\)。算术基本定理:设\(a>1\),那么必有\(a=p_1^{\alpha_1}p_2^{\alpha_2}\cdotsp_s^{\alpha_s}\),其中\(p_i\(1\lei\les)\)是两两不相同的质数,\(\alpha_i\(1\lei\le......
  • 费马大定理在n等于4时成立的证明
    1.费马大定理内容大约在1637年左右,法国学者费马在阅读丢番图(Diophatus)《算术》拉丁文译本时,曾在第11卷第8命题旁写道:“将一个立方数分成两个立方数之和,或一个四次幂分成两个四次幂之和,或者一般地将一个高于二次的幂分成两个同次幂之和,这是不可能的。关于此,我确信已发现了一种美妙......
  • 中国剩余定理(一次同余问题) Java
    /***中国剩余定理*/publicclassChineseRemainderTheorem{//扩展欧几里得算法,返回gcd(a,b)以及x,y使得ax+by=gcd(a,b)publicstaticintextendedGCD(inta,intb,int[]xy){if(b==0){xy[0]=1;xy[1]......
  • 信息安全数学基础(20)中国剩余定理
    前言    信息安全数学基础中的中国剩余定理(ChineseRemainderTheorem,简称CRT),又称孙子定理,是数论中一个重要的定理,主要用于求解一次同余式组。一、背景与起源    中国剩余定理最早见于我国南北朝时期的数学著作《孙子算经》中的“物不知数”问题。该问题可......
  • 信息学奥赛初赛天天练-92-CSP-S2023阅读程序2-动态数组、反转函数、埃氏筛法、欧拉筛
    2023CSP-S阅读程序2判断题正确填√,错误填⨉;除特殊说明外,判断题1.5分,选择题3分,共计40分)01#include<iostream>02#include<cmath>03#include<vector>04#include<algorithm>05usingnamespacestd;0607longlongsolve1(intn){08vector<bo......