本篇文章针对中国剩余定理,给出纸笔计算过程,并引申出python代码实现
现给出题目
解同余方程组:
x≡2 mod 5x≡3 mod 11x≡5 mod 17
1.纸笔计算
当计算量更大时,可以使用python实现:
1234567891011121314151617181920212223242526def egcd(a, b): if b == 0: return a, 1, 0 else: g, x1, y1 = egcd(b, a % b) g, x, y = g, y1, x1 - (a // b) * y1 return g, x, ydef mod_inv(a, m): g, x, y = egcd(a, m) return x % m # 确保返回正整数def crt(remainders, moduli): M = 1 for m in moduli: M *= m solution = 0 for i in range(le ...
python编程
未读每个合数都可以写成几个质数相乘的形式,其中每个质数都是这个合数的因数,把一个合数用质因数相乘的形式表示出来,叫做分解质因数,也叫做分解质因子。
使用python进行质因数分解可以利用Sympy库
Sympy库的下载安装如果未下载Sympy库,可以在终端中输入
1pip install sympy
factorint函数分解质因数1234567from sympy import factorintk = 366131711084116972797754155655428661136606301399405028536784695081831603930386464285107163569536400#对k进行质因数分解factors = factorint(k)print("对k质因数分解的结果为",factors)
输出的结果为:
1对k质因数分解的结果为 {2: 4, 3: 2, 5: 2, 7: 8, 13: 2, 31: 2, 43: 2, 109: 2, 239: 2, 691: 2, 8521: 2, mpz(1697946359): 2 ...
久违亦如初见
本文持续更新中
数论简介:
数论(number theory),是纯粹数学的分支之一,主要研究整数的性质。
模运算
1. 模运算规则
a mod b (b>0,且a,b均为整数) 相当于许多编程语言中的a % b,表示a作为被除数,b作为除数时,计算所得到的余数
这里强调,除数b必须是正整数,而被除数a可以是负整数
2. 整除的概念
如果a mod b= 0,则称b整除a,记作b|a
如:15/5=3,则5|15
3.整除的性质
1231.若a|b, a|c, 则a|(b+c)证明:
12.若a|b,则对任意c(c≠0),a|bc
13.对任意非零整数a,±a|a=±1
14.若a|b,b|a,则|a|=|b|
15.a|b,a|c⇔∀x,y∈Z ,a|(bx+cy)
16.如果a|b,a|c, gcd(b,c)=1,那么a|bc,反过来也成立
17.若m≠0,则a|b⇔(m⋅a)|(m⋅b)
18.x,y∈Z,且∃a,b 使ax+by=1,a|n,b|n⇒(a⋅b)|n
4. 模运算举例
15点是下午3点,19点是晚上7点,这其实就运用了模运算(x mod 12)
a ...
Crypto
未读XOR是CTFer在做题中常见的问题,本文分享一下我在做题过程中遇到的经典问题
什么是XORXOR即”异或运算“,它在数学表达式中常常写作’’⊕’’,在常见的几种编程语言中,则是用符号’’^’’来表示。
XOR运算遵循这样的规则:
1⊕1 = 0
0⊕0 = 0
1⊕0 = 1
0⊕1 = 1
在实际运算中,它是按位运算的。现有二进制10010和11001,二者异或的结果为01011。
XOR的运算性质XOR运算具有
1)交换律
2)结合律
3)归零律:A⊕A=0
4)恒等律:A⊕0=A
由其归零率和恒等率我们还可以推出:
A⊕B=C
即A⊕B⊕B=C⊕B
即A=C⊕B
这就说明了为什么单单使用XOR,属于对称密码。假设A是密文,B是密钥,经过上面的步骤可以看出只要知道密钥B,就能将密文和明文相互转化。
XOR题型举例利用运算性质本题来源于cryptohack
1234KEY1 = a6c8b6733c9b22de7bc0253266a3867df55acde8635e19c73313KEY2 ^ ...