数学中国

 找回密码
 注册
搜索
热搜: 活动 交友 discuz
查看: 134|回复: 2

《数论探秘》中复制黏贴过来的筛选大素数的代码

[复制链接]
发表于 2026-11-2 22:38 | 显示全部楼层 |阅读模式
如下是从《数论探秘》中复制黏贴过来的筛选大素数的代码及其结果:
170141183460469231731687303715884105757~170141183460469231731687303715884105773之间的素数有2个(用时13.60156秒 ):
170141183460469231731687303715884105757   170141183460469231731687303715884105773   

(代码仅仅发主程序)
Private Sub Command1_Click()
Dim a, n
n = Trim(Text1)
n3 = n
m = Trim(Text2)
t = Timer
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 & Space(3)
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 5 = 0 Then
m1 = m1 & n & vbCrLf
Else
m1 = m1 & n & Space(3)
End If
Else
m1 = m1
End If
End If
End If
n = MPC1(Trim(n), 2)
Loop
Text3 = n3 & "~" & m & "之间的素数有" & s & "个(用时" & Timer - t & "秒 ):" & vbCrLf & m1
End Sub
Private Sub Command2_Click()
Text1 = ""
Text2 = ""
Text3 = ""
End Sub
 楼主| 发表于 2026-11-3 07:45 | 显示全部楼层
73425633894622870812912264279427304662415407498217399761627450589750429468816261632146658967160832384997092708273473~73425633894622870812912264279427304662415407498217399761627450589750429468816261632146658967160832384997092708273673之间的素数有1个(用时1782.273秒 ):
73425633894622870812912264279427304662415407498217399761627450589750429468816261632146658967160832384997092708273663   
终于找到了一个素数(有116位)(筛选核判断利用的是欧拉原理)
回复 支持 反对

使用道具 举报

 楼主| 发表于 2026-11-3 08:04 | 显示全部楼层
我的方法是串行程序,不能象分布程序一样由多台电脑连网并行运算而减少时间,只能是单台计算,循环程序语句不多,但每一次循环结果就是下一次循环的输入,所以,不能并行运算,而循环次数多时间就长,能缩短时间的是程序采用了快速算法,大整数加减乘除的快速算法,以及快速幂摸算法等。判断原理是利用的欧拉原理。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|数学中国 ( 京ICP备05040119号 )

GMT+8, 2026-11-15 12:11 , Processed in 0.320475 second(s), 15 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表