|

楼主 |
发表于 2021-2-2 02:02
|
显示全部楼层
本帖最后由 ysr 于 2021-2-1 18:49 编辑
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
a3 = a
a2 = a3 + 2
Do While a2 <= m
Do While InStr(fenjieyinzi0(Trim(a2)), "*") > 0 Or InStr(fenjieyinzi0(Trim(a3)), "*") > 0
a3 = a2 + 2
a2 = a3 + 2
Loop
B1 = a2
B2 = MPC1(Trim(B1), Trim(t))
b3 = MPC1(Trim(B2), 2)
C1 = fenjieyinzi0(Val(B1))
C2 = fenjieyinzi0(Trim(B2))
C3 = fenjieyinzi0(Trim(b3))
If InStr(C1, "*") = 0 And InStr(C2, "*") = 0 And InStr(C3, "*") = 0 Then
s = s + 1
Print B1, B2
Text3 = Text3 & "/" & B1 & "/" & B2 & "/" & b3 & vbCrLf
Else
s = s
End If
a2 = a2 + 2
Loop
s1 = s
Do While a2 + 2 <= q
Do While InStr(fenjieyinzi0(Trim(a2)), "*") > 0 Or InStr(fenjieyinzi0(Trim(a3)), "*") > 0
a3 = a2 + 2
a2 = a3 + 2
Loop
B1 = a2
B2 = MPC1(Trim(B1), Trim(t))
b3 = MPC1(Trim(B2), 2)
C1 = fenjieyinzi0(Val(B1))
C2 = fenjieyinzi0(Trim(B2))
C3 = fenjieyinzi0(Trim(b3))
If InStr(C1, "*") = 0 And InStr(C2, "*") = 0 And InStr(C3, "*") = 0 Then
s1 = s1 + 1
Print B1, B2
Text3 = Text3 & "/" & B1 & "/" & B2 & "/" & b3 & vbCrLf
Else
s1 = s1
End If
a2 = a2 + 2
Loop
Combo1 = a1 & "与" & q & "之间有" & s1 & "组差为" & t & "和2的3生素数对:" & vbCrLf & Text3
End Sub
Private Sub Command2_Click()
Text1 = ""
Text2 = ""
Text3 = ""
Text4 = ""
Combo1 = ""
Form1.Cls
End Sub
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 |
|