|

楼主 |
发表于 2021-2-1 23:00
|
显示全部楼层
本帖最后由 ysr 于 2021-2-1 21:50 编辑
Private Function fenjieyinzi0(sa As String) As String
Dim a, n
n = Trim(sa)
If Len(n) < 6 Then
fenjieyinzi0 = fenjieyinzi(Trim(n))
Else
n1 = MPC(Trim(n), 1)
a = 123
'a为明文
a1 = zzxc(Trim(n), Trim(a))
If Val(a1) > 1 Then
fenjieyinzi0 = a1 & "*"
Else
c = 999
'c为公约
Do While zzxc(Trim(n1), Trim(c)) > 1
c = Val(c - 1)
Loop
d = qniyuan(Trim(c), Trim(n1))
'd为逆元为私钥
a2 = qksmimo(Trim(a), Trim(c), Trim(n))
'a2为密文
a3 = qksmimo(Trim(a2), Trim(d), Trim(n))
If MBJC(Trim(a3), Trim(a)) = 0 Then
fenjieyinzi0 = "这是素数有"
Else
fenjieyinzi0 = "2*2"
End If
End If
End If
End Function
Private Sub Command1_Click()
Dim a, b
a = Val(Text1)
a1 = a
q = Val(Text2)
m = Sqr(q)
t = Trim(Text4)
If Right(a, 1) Mod 2 = 0 Then
a = a + 1
Else
a = a
End If
s = 0
a2 = a
Do While a2 <= m
Do While InStr(fenjieyinzi0(Trim(a2)), "*") > 0
a2 = a2 + 2
Loop
B1 = a2
b2 = MPC1(Trim(B1), Trim(t))
C1 = fenjieyinzi0(Val(B1))
C2 = fenjieyinzi0(Trim(b2))
If InStr(C1, "*") = 0 And InStr(C2, "*") = 0 Then
s = s + 1
Print B1, b2
Text3 = Text3 & "/" & B1 & "/" & b2 & vbCrLf
Else
s = s
End If
a2 = a2 + 2
Loop
a2 = a2
s1 = s
Do While a2 +2<= q
Do While InStr(fenjieyinzi0(Trim(a2)), "*") > 0
a2 = a2 + 2
Loop
B1 = a2
b2 = MPC1(Trim(B1), Trim(t))
C1 = fenjieyinzi0(Val(B1))
C2 = fenjieyinzi0(Trim(b2))
If InStr(C1, "*") = 0 And InStr(C2, "*") = 0 Then
s1 = s1 + 1
Print B1, b2
Text3 = Text3 & "/" & B1 & "/" & b2 & vbCrLf
Else
s1 = s1
End If
a2 = a2 + 2
Loop
Combo1 = a1 & "与" & q & "之间有" & s1 & "组差为" & t & "的2生素数对:" & vbCrLf & Text3
End Sub
Private Sub Command2_Click()
Text1 = ""
Text2 = ""
Text3 = ""
Text4 = ""
Combo1 = ""
Form1.Cls
End Sub
|
|