|
本帖最后由 ysr 于 2023-12-21 05:45 编辑
12345678911~12345679819之间的素数有35个:(用时9.523438秒)
12345678923 12345678929 12345678949 12345679007 12345679109 12345679127 12345679133 12345679187 12345679193 12345679201
12345679219 12345679253 12345679261 12345679301 12345679319 12345679321 12345679397 12345679403 12345679499 12345679501
12345679519 12345679547 12345679579 12345679597 12345679607 12345679637 12345679649 12345679657 12345679669 12345679679
12345679681 12345679747 12345679783 12345679793 12345679817
代码如下:
'这个代码可以快速判断大素数而且是确定性的
Private Sub Command1_Click()
Dim a, n
n = Trim(Text1)
n3 = n
m = Trim(Text2)
Do While MBJC(Trim(n), 3) < 0
If MBJC(Trim(n), 2) = 0 Then
m1 = m1 & n & " "
s = s + 1
Else
m1 = m1
End If
n = n + 1
Loop
If Right(n, 1) Mod 2 = 0 Then
n = MPC1(Trim(n), 1)
Else
n = n
End If
Do While MBJC(Trim(n), Trim(m)) <= 0
If Len(n) < 11 Then
a1 = fenjieyinzi(Trim(n))
If InStr(a1, "*") = 0 Then
s = s + 1
If s Mod 10 = 0 Then
m1 = m1 & n & vbCrLf
Else
m1 = m1 & n & " "
End If
Else
m1 = m1
End If
Else
n1 = MPC(Trim(n), 1)
a = 123
'a为明文
a1 = zzxc(Trim(n), Trim(a))
If Val(a1) > 1 Then
m1 = m1
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
s = s + 1
If s Mod 10 = 0 Then
m1 = m1 & n & vbCrLf
Else
m1 = m1 & n & " "
End If
Else
m1 = m1
End If
End If
End If
n = MPC1(Trim(n), 2)
Loop
Text3 = n3 & "~" & m & "之间的素数有" & s & "个:" & vbCrLf & m1
End Sub
Private Sub Command2_Click()
Text1 = ""
Text2 = ""
Text3 = ""
End Sub
单位的电脑上的压缩软件被删掉了,传不上来可执行程序,如下文章的第四页有个可执行程序,双击程序图标,解压缩后就可以打开并运行了:
http://www.mathchina.com/bbs/for ... p;extra=&page=4 |
|