00 前情提要
最近处于期末复习阶段,对于现代密码学这门学科来说,解题过程中经常出现几种运算的身影,其中包括整数模运算、分数模运算、乘法逆元运算等。
而为方便检验自己的笔算结果,这里使用一个简单的python程序验证计算结果。
01 实现背景
先来简单举几个笔算的例子,既方便大家理解,也方便用于验证python脚本的正确性。
整数模运算,如 2 mod 5 = 2
分数模运算,如 1/3 mod 5 = 2
乘法逆元运算,1 关于 6 的乘法逆元为 7
02 实现源码
import os
def ny(e
,z
):
k
=1
e
=e
%z
while((k
*z
+1)%e
!=0):
k
=k
+1
d
=int((k
*z
+1)/e
)
return d
def myfmod():
a
=int(input("请输入分子:"))
b
=int(input("请输入分母:"))
c
=int(input("请输入模:"))
g
=a
a
=a
%c
d
=(a
*ny
(b
,c
))%c
print("分数%d/%d模%d的余数为%d"%(g
,b
,c
,d
))
f
=input("按任意键继续")
def mymod():
a
=int(input("请输入整数:"))
b
=int(input("请输入模:"))
print("整数数%d模%d的余数为%d"%(a
,b
,a
%b
))
f
=input("按任意键继续")
flag
=1
while(flag
!=0):
print("欢迎使用密码学计算器")
print("1.求整数模")
print("2.求分数模")
print("3.求乘法逆元")
print("0.退出")
flag
=int(input("请选择:"))
if flag
==1:
mymod
()
elif flag
==2:
myfmod
()
elif flag
==3:
a
=int(input("请输入整数a:"))
b
=int(input("请输入整数b:"))
print(f
'{a}关于{b}的乘法逆元为{ny(a,b)}')
f
=input("按任意键继续")
os
.system
('cls')
03 实现效果