数学中国

 找回密码
 注册
搜索
热搜: 活动 交友 discuz
楼主: ysr

[求助]素性测试

[复制链接]
 楼主| 发表于 2023-12-16 13:53 | 显示全部楼层
Private Sub Command1_Click()

Dim n, i, s
n = Trim(Text1)
s = Trim(Text2)
i = MbC(Trim(s), 2)
n2 = n
i2 = i
Do While s1 < 300
s1 = s1 + 1
Do While MBJC(Trim(s), zhengchuqyushu(MCC1(Trim(n), Trim(i)))) < 0 And MBJC(zzxc(Trim(n), Trim(i)), 1) = 0

r = zhengchuqyushu(MCC1(Trim(n), Trim(i)))

i = r

Loop
If MBJC(zzxc(Trim(n), Trim(i)), 1) = 0 Then
s3 = "wu  jie"
Else
s2 = s2 + 1
p = zzxc(Trim(n), Trim(i))
s4 = p
's4 = s4 & "  " & MCC(MPC1(Trim(i), 1), 2)
End If
n = n2
i2 = i2 - 1
i = i2
Loop

If s2 > 0 Then
Text3 = s4
Else
Text3 = s3
End If


End Sub

Private Sub Command2_Click()
Text1 = ""
Text2 = ""
Text3 = ""
End Sub
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-12-16 15:41 | 显示全部楼层
Private Sub Command1_Click()

Dim n, i, s
n = Trim(Text1)
s = Trim(Text2)
i = MbC(Trim(s), 3)
n2 = n
i2 = i
Do While s1 < 400
s1 = s1 + 1
Do While MBJC(Trim(s), zhengchuqyushu(MCC1(Trim(n), Trim(i)))) < 0 And MBJC(zzxc(Trim(n), Trim(i)), 1) = 0

r = zhengchuqyushu(MCC1(Trim(n), Trim(i)))
n = zhengchuqy(MCC1(Trim(n), Trim(i)))
i = r

Loop
If MBJC(zzxc(Trim(n), Trim(i)), 1) = 0 Then
s3 = "wu  jie"
Else
s2 = s2 + 1
p = zzxc(Trim(n), Trim(i))
s4 = p
's4 = s4 & "  " & MCC(MPC1(Trim(i), 1), 3)
End If
n = n2
i2 = i2 - 1
i = i2
Loop

If s2 > 0 Then
Text3 = s4
Else
Text3 = s3
End If


End Sub

Private Sub Command2_Click()
Text1 = ""
Text2 = ""
Text3 = ""
End Sub
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-12-18 20:59 | 显示全部楼层
本帖最后由 ysr 于 2023-12-21 05:37 编辑

'这个代码可以快速判断大素数而且是确定性的
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
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-12-20 06:37 | 显示全部楼层
23   ×   89   ×   239   ×   113   ×   49   ×   199   ×   127   ×   161   ×   73   ×   463 =372,543,329,524,168,337,087

11   ×   31   ×   59   ×   19   ×   55   ×   89   ×   71   ×   109   ×   155   ×   79   ×   179 =31,740,177,770,736,792,775
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-12-23 10:03 | 显示全部楼层
12345679819~12345680819之间的素数有39个:(用时10.59375秒)
12345679823  12345679867  12345679877  12345679889  12345679903  12345679933  12345679937  12345679943  12345679981  12345680003
12345680023  12345680029  12345680069  12345680089  12345680099  12345680153  12345680159  12345680183  12345680213  12345680267
12345680323  12345680341  12345680363  12345680387  12345680411  12345680453  12345680471  12345680549  12345680573  12345680587
12345680603  12345680623  12345680671  12345680689  12345680693  12345680707  12345680747  12345680807  12345680819  
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-12-26 22:41 | 显示全部楼层
设M的粗化试除因子是p,商是q,求解方程:(p+2F)(q-4BF)=M,即8BF^2-(2q-4Bp)F-pq+M=0,
B=x1/n1,x1=[(q-p)/4],n1=[p/2]。
求:粗化修正值F=?2n2+1=p+2F
细化修正值H=x1-FB-(M/(2n2+1)-(2n2+1))/4
新商=M-pq+Hp
新因子=M/新商
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-12-26 23:03 | 显示全部楼层
Private Sub Command1_Click()
Dim p, q
m = Val(Text1)
p = Val(Text2)
q = m / p
q = Int(q)
X1 = (q - p) / 4
X1 = Int(X1)
n1 = p / 2
n1 = Int(n1)
b = X1 / n1
a = 8 * b
b1 = 4 * b * p - 2 * q
c = m - p * q
f = ((b1 ^ 2 - 4 * a * c) ^ (1 / 2) - b1) / (2 * a)
p1 = p + 2 * f
h = X1 - f * b - (m / p1 - p1) / 4
q1 = m - p * q + h * p
p2 = m / q1

Text3 = p2

End Sub

Private Sub Command2_Click()
Text1 = ""
Text2 = ""
Text3 = ""

End Sub
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-12-27 00:28 | 显示全部楼层
Private Sub Command1_Click()
Dim p, q
m = Val(Text1)
p = Val(Text2)
q = m / p
q = Int(q)
X1 = (q - p) / 4
X1 = Int(X1)
n1 = p / 2
n1 = Int(n1)
b = X1 / n1
a = 8 * b
b1 = 4 * b * p - 2 * q
c = m - p * q
f = ((b1 ^ 2 - 4 * a * c) ^ (1 / 2) - b1) / (2 * a)
f = Int(f)
p1 = p + 2 * f
p1 = Int(p1)
q2 = m / p1
h = Val(X1 - f * b - (m / p1 - p1) / 4)
h = Int(h)
p3 = Val(m / (q2 + h * 1.8084))


Text3 = p3

End Sub

Private Sub Command2_Click()
Text1 = ""
Text2 = ""
Text3 = ""

End Sub
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-12-27 13:16 | 显示全部楼层
Private Sub Command1_Click()
Dim p, q
m = Val(Text1)
d = m / 4
d = Int(d)
p = d / Int(Sqr(m))
p = Int(p) + 1
q = m / p
q = Int(q)
X1 = (q - p) / 4
X1 = Int(X1)
n1 = p / 2
n1 = Int(n1)
b = Val(X1 / n1)
a = 8 * b
b1 = 4 * b * p - 2 * q
c = m - p * q
f = ((b1 ^ 2 - 4 * a * c) ^ (1 / 2) - b1) / (2 * a)
f = Int(f)
p1 = p + 2 * f
h = X1 - f * b - (m / p1 - p1) / 4
h = Int(h)
q1 = m - p * q + h * p
p2 = m / q1

Text2 = p2

End Sub

Private Sub Command2_Click()
Text1 = ""
Text2 = ""

End Sub
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-12-27 13:18 | 显示全部楼层
Private Sub Command1_Click()
Dim p, q
m = Val(Text1)
d = m / 4
d = Int(d)
p = d / Int(Sqr(m))
p = Int(p) + 1
q = m / p
q = Int(q)
X1 = (q - p) / 4
X1 = Int(X1)
n1 = p / 2
n1 = Int(n1)
b = Val(X1 / n1)
a = 8 * b
b1 = 4 * b * p - 2 * q
c = m - p * q
f = ((b1 ^ 2 - 4 * a * c) ^ (1 / 2) - b1) / (2 * a)
f = Int(f)
p1 = p + 2 * f
q2 = m / p1
h = Val(X1 - f * b - (m / p1 - p1) / 4)
h = Int(h)
p3 = Val(m / (q2 + h * 1.8084))


Text2 = p3

End Sub

Private Sub Command2_Click()
Text1 = ""
Text2 = ""

End Sub
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-28 16:27 , Processed in 0.077148 second(s), 14 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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