数学中国

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

判断素数及分解合数(小数据的)的可调用vb程序

[复制链接]
发表于 2026-2-18 08:10 | 显示全部楼层 |阅读模式
Private Function fenjieyinzi(sa As String) As String
Dim x, A, B, k As String
A = Val(sa)

x = 3
If A <= 1 Or A > Int(A) Then
If A = 1 Then
fenjieyinzi = "它既不是质数,也不是合数"

Else
MsgBox "error"
End If
  
Else

Do While A / 2 = Int(A / 2) And A >= 4
  
If B = 0 Then
fenjieyinzi = fenjieyinzi & "2"
B = 1
Else
fenjieyinzi = fenjieyinzi & "*2"
End If
A = A / 2
k = A
  
Loop

Do While A > 1
Do While x <= Sqr(A)
Do While A / x = Int(A / x) And A >= x * x
  
If B = 0 Then
fenjieyinzi = fenjieyinzi & x
B = 1
Else
fenjieyinzi = fenjieyinzi & "*" & x
End If
A = A / x
Loop
  
x = x + 2
Loop
  
k = A
A = 1
Loop
  
If B = 1 Then
fenjieyinzi = fenjieyinzi & "*" & k
Else
fenjieyinzi = "这是一个质数"
End If
  
End If

End Function
 楼主| 发表于 2026-2-18 08:12 | 显示全部楼层
如下是个快速判断素数的程序,小数据的不分解因数:

Private Function fenjieyinzi3(sa As String) As String
Dim x, a, b
x = sa
b = Int(Sqr(Val(x)) / 2)
If x = 3 Or x = 2 Then
a = True
Else
If Right(x, 1) Mod 2 = 0 Then
a = False
Else

For I = 3 To 2 * b + 1 Step 2
If InStr(Val(x) / I, ".") = 0 Then
a = False
Exit For

Else: a = True

End If
Next
End If
End If
If a = True Then
fenjieyinzi3 = "这是个素数"
Else
fenjieyinzi3 = "2*2"
End If

End Function
回复 支持 反对

使用道具 举报

 楼主| 发表于 2026-2-18 08:15 | 显示全部楼层
如下程序也是判断素数的,大数据的,不分解因数:

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

回复 支持 反对

使用道具 举报

 楼主| 发表于 2026-2-18 10:52 | 显示全部楼层
Private Sub Command1_Click()
'验证迪利克雷猜想的程序
Dim a, b
a = Val(Text1)
b = 1
Do While b <= a
p1 = 30 * b + 1
p2 = 30 * b + 7
p3 = 30 * b + 11
p4 = 30 * b + 13
p5 = 30 * b + 17
p6 = 30 * b + 19
p7 = 30 * b + 23
p8 = 30 * b + 29
p11 = fenjieyinzi(Val(p1)): p12 = fenjieyinzi(Val(p2)): p13 = fenjieyinzi(Val(p3)): p14 = fenjieyinzi(Val(p4))
p15 = fenjieyinzi(Val(p5)): p16 = fenjieyinzi(Val(p6)): p17 = fenjieyinzi(Val(p7)): p18 = fenjieyinzi(Val(p8))
s = s & "~~~~~~~       " & p11 & "     " & p12 & "     " & p13 & "     " & p14 & "     " & p15 & "     " & p16 & "     " & p17 & "     " & p18 & vbCrLf

b = b + 1
Loop
Text3 = "~~~~~~~       " & "30n+1" & Space(15) & "30n+7" & Space(15) & "30n+11" & Space(15) & "30n+13" & Space(15) & "30n+17    " & "        30n+19" & "           30n+23" & "           30n+29" & vbCrLf

Text3 = Text3 & s



End Sub

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

End Sub
回复 支持 反对

使用道具 举报

 楼主| 发表于 2026-2-18 15:25 | 显示全部楼层
Private Sub Command1_Click()
'验证迪利克雷猜想的程序
Dim a, b
a = Val(Text1)
b = 1
Do While b <= a
p1 = 30 * b + 1
p2 = 30 * b + 7
p3 = 30 * b + 11
p4 = 30 * b + 13
p5 = 30 * b + 17
p6 = 30 * b + 19
p7 = 30 * b + 23
p8 = 30 * b + 29
p11 = fenjieyinzi(Val(p1)): p12 = fenjieyinzi(Val(p2)): p13 = fenjieyinzi(Val(p3)): p14 = fenjieyinzi(Val(p4))
p15 = fenjieyinzi(Val(p5)): p16 = fenjieyinzi(Val(p6)): p17 = fenjieyinzi(Val(p7)): p18 = fenjieyinzi(Val(p8))
s = s & "~~~~~~~       " & p11 & "        " & p12 & "        " & p13 & "        " & p14 & "        " & p15 & "        " & p16 & "        " & p17 & "        " & p18 & vbCrLf

b = b + 1
Loop
Text3 = "~~~~~~~       " & "30n+1" & Space(10) & "30n+7" & Space(10) & "30n+11" & Space(10) & "30n+13" & Space(10) & "30n+17    " & "        30n+19" & "           30n+23" & "           30n+29" & vbCrLf

Text3 = Text3 & s



End Sub

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

End Sub

Private Function fenjieyinzi(sa As String) As String
Dim x, a, b, k As String
a = Val(sa)

x = 3
If a <= 1 Or a > Int(a) Then
If a = 1 Then
fenjieyinzi = "它既不是质数,也不是合数"

Else
MsgBox "error"
End If
  
Else

Do While a / 2 = Int(a / 2) And a >= 4
  
If b = 0 Then
fenjieyinzi = fenjieyinzi & "2"
b = 1
Else
fenjieyinzi = fenjieyinzi & "*2"
End If
a = a / 2
k = a
  
Loop

Do While a > 1
Do While x <= Sqr(a)
Do While a / x = Int(a / x) And a >= x * x
  
If b = 0 Then
fenjieyinzi = fenjieyinzi & x
b = 1
Else
fenjieyinzi = fenjieyinzi & "*" & x
End If
a = a / x
Loop
  
x = x + 2
Loop
  
k = a
a = 1
Loop
  
If b = 1 Then
fenjieyinzi = fenjieyinzi & "*" & k
Else
fenjieyinzi = sa & "是质数"
End If
  
End If
If InStr(fenjieyinzi, "*") > 0 Then
fenjieyinzi = sa & "=" & fenjieyinzi
Else
fenjieyinzi = fenjieyinzi
End If

End Function
回复 支持 反对

使用道具 举报

 楼主| 发表于 2026-2-18 16:41 | 显示全部楼层
各数列前100项的情况:

~~~~~~~       30n+1          30n+7          30n+11          30n+13          30n+17            30n+19           30n+23           30n+29
~~~~~~~       31是质数        37是质数        41是质数        43是质数        47是质数        49=7*7        53是质数        59是质数
~~~~~~~       61是质数        67是质数        71是质数        73是质数        77=7*11        79是质数        83是质数        89是质数
~~~~~~~       91=7*13        97是质数        101是质数        103是质数        107是质数        109是质数        113是质数        119=7*17
~~~~~~~       121=11*11        127是质数        131是质数        133=7*19        137是质数        139是质数        143=11*13        149是质数
~~~~~~~       151是质数        157是质数        161=7*23        163是质数        167是质数        169=13*13        173是质数        179是质数
~~~~~~~       181是质数        187=11*17        191是质数        193是质数        197是质数        199是质数        203=7*29        209=11*19
~~~~~~~       211是质数        217=7*31        221=13*17        223是质数        227是质数        229是质数        233是质数        239是质数
~~~~~~~       241是质数        247=13*19        251是质数        253=11*23        257是质数        259=7*37        263是质数        269是质数
~~~~~~~       271是质数        277是质数        281是质数        283是质数        287=7*41        289=17*17        293是质数        299=13*23
~~~~~~~       301=7*43        307是质数        311是质数        313是质数        317是质数        319=11*29        323=17*19        329=7*47
~~~~~~~       331是质数        337是质数        341=11*31        343=7*7*7        347是质数        349是质数        353是质数        359是质数
~~~~~~~       361=19*19        367是质数        371=7*53        373是质数        377=13*29        379是质数        383是质数        389是质数
~~~~~~~       391=17*23        397是质数        401是质数        403=13*31        407=11*37        409是质数        413=7*59        419是质数
~~~~~~~       421是质数        427=7*61        431是质数        433是质数        437=19*23        439是质数        443是质数        449是质数
~~~~~~~       451=11*41        457是质数        461是质数        463是质数        467是质数        469=7*67        473=11*43        479是质数
~~~~~~~       481=13*37        487是质数        491是质数        493=17*29        497=7*71        499是质数        503是质数        509是质数
~~~~~~~       511=7*73        517=11*47        521是质数        523是质数        527=17*31        529=23*23        533=13*41        539=7*7*11
~~~~~~~       541是质数        547是质数        551=19*29        553=7*79        557是质数        559=13*43        563是质数        569是质数
~~~~~~~       571是质数        577是质数        581=7*83        583=11*53        587是质数        589=19*31        593是质数        599是质数
~~~~~~~       601是质数        607是质数        611=13*47        613是质数        617是质数        619是质数        623=7*89        629=17*37
~~~~~~~       631是质数        637=7*7*13        641是质数        643是质数        647是质数        649=11*59        653是质数        659是质数
~~~~~~~       661是质数        667=23*29        671=11*61        673是质数        677是质数        679=7*97        683是质数        689=13*53
~~~~~~~       691是质数        697=17*41        701是质数        703=19*37        707=7*101        709是质数        713=23*31        719是质数
~~~~~~~       721=7*103        727是质数        731=17*43        733是质数        737=11*67        739是质数        743是质数        749=7*107
~~~~~~~       751是质数        757是质数        761是质数        763=7*109        767=13*59        769是质数        773是质数        779=19*41
~~~~~~~       781=11*71        787是质数        791=7*113        793=13*61        797是质数        799=17*47        803=11*73        809是质数
~~~~~~~       811是质数        817=19*43        821是质数        823是质数        827是质数        829是质数        833=7*7*17        839是质数
~~~~~~~       841=29*29        847=7*11*11        851=23*37        853是质数        857是质数        859是质数        863是质数        869=11*79
~~~~~~~       871=13*67        877是质数        881是质数        883是质数        887是质数        889=7*127        893=19*47        899=29*31
~~~~~~~       901=17*53        907是质数        911是质数        913=11*83        917=7*131        919是质数        923=13*71        929是质数
~~~~~~~       931=7*7*19        937是质数        941是质数        943=23*41        947是质数        949=13*73        953是质数        959=7*137
~~~~~~~       961=31*31        967是质数        971是质数        973=7*139        977是质数        979=11*89        983是质数        989=23*43
~~~~~~~       991是质数        997是质数        1001=7*11*13        1003=17*59        1007=19*53        1009是质数        1013是质数        1019是质数
~~~~~~~       1021是质数        1027=13*79        1031是质数        1033是质数        1037=17*61        1039是质数        1043=7*149        1049是质数
~~~~~~~       1051是质数        1057=7*151        1061是质数        1063是质数        1067=11*97        1069是质数        1073=29*37        1079=13*83
~~~~~~~       1081=23*47        1087是质数        1091是质数        1093是质数        1097是质数        1099=7*157        1103是质数        1109是质数
~~~~~~~       1111=11*101        1117是质数        1121=19*59        1123是质数        1127=7*7*23        1129是质数        1133=11*103        1139=17*67
~~~~~~~       1141=7*163        1147=31*37        1151是质数        1153是质数        1157=13*89        1159=19*61        1163是质数        1169=7*167
~~~~~~~       1171是质数        1177=11*107        1181是质数        1183=7*13*13        1187是质数        1189=29*41        1193是质数        1199=11*109
~~~~~~~       1201是质数        1207=17*71        1211=7*173        1213是质数        1217是质数        1219=23*53        1223是质数        1229是质数
~~~~~~~       1231是质数        1237是质数        1241=17*73        1243=11*113        1247=29*43        1249是质数        1253=7*179        1259是质数
~~~~~~~       1261=13*97        1267=7*181        1271=31*41        1273=19*67        1277是质数        1279是质数        1283是质数        1289是质数
~~~~~~~       1291是质数        1297是质数        1301是质数        1303是质数        1307是质数        1309=7*11*17        1313=13*101        1319是质数
~~~~~~~       1321是质数        1327是质数        1331=11*11*11        1333=31*43        1337=7*191        1339=13*103        1343=17*79        1349=19*71
~~~~~~~       1351=7*193        1357=23*59        1361是质数        1363=29*47        1367是质数        1369=37*37        1373是质数        1379=7*197
~~~~~~~       1381是质数        1387=19*73        1391=13*107        1393=7*199        1397=11*127        1399是质数        1403=23*61        1409是质数
~~~~~~~       1411=17*83        1417=13*109        1421=7*7*29        1423是质数        1427是质数        1429是质数        1433是质数        1439是质数
~~~~~~~       1441=11*131        1447是质数        1451是质数        1453是质数        1457=31*47        1459是质数        1463=7*11*19        1469=13*113
~~~~~~~       1471是质数        1477=7*211        1481是质数        1483是质数        1487是质数        1489是质数        1493是质数        1499是质数
~~~~~~~       1501=19*79        1507=11*137        1511是质数        1513=17*89        1517=37*41        1519=7*7*31        1523是质数        1529=11*139
~~~~~~~       1531是质数        1537=29*53        1541=23*67        1543是质数        1547=7*13*17        1549是质数        1553是质数        1559是质数
~~~~~~~       1561=7*223        1567是质数        1571是质数        1573=11*11*13        1577=19*83        1579是质数        1583是质数        1589=7*227
~~~~~~~       1591=37*43        1597是质数        1601是质数        1603=7*229        1607是质数        1609是质数        1613是质数        1619是质数
~~~~~~~       1621是质数        1627是质数        1631=7*233        1633=23*71        1637是质数        1639=11*149        1643=31*53        1649=17*97
~~~~~~~       1651=13*127        1657是质数        1661=11*151        1663是质数        1667是质数        1669是质数        1673=7*239        1679=23*73
~~~~~~~       1681=41*41        1687=7*241        1691=19*89        1693是质数        1697是质数        1699是质数        1703=13*131        1709是质数
~~~~~~~       1711=29*59        1717=17*101        1721是质数        1723是质数        1727=11*157        1729=7*13*19        1733是质数        1739=37*47
~~~~~~~       1741是质数        1747是质数        1751=17*103        1753是质数        1757=7*251        1759是质数        1763=41*43        1769=29*61
~~~~~~~       1771=7*11*23        1777是质数        1781=13*137        1783是质数        1787是质数        1789是质数        1793=11*163        1799=7*257
~~~~~~~       1801是质数        1807=13*139        1811是质数        1813=7*7*37        1817=23*79        1819=17*107        1823是质数        1829=31*59
~~~~~~~       1831是质数        1837=11*167        1841=7*263        1843=19*97        1847是质数        1849=43*43        1853=17*109        1859=11*13*13
~~~~~~~       1861是质数        1867是质数        1871是质数        1873是质数        1877是质数        1879是质数        1883=7*269        1889是质数
~~~~~~~       1891=31*61        1897=7*271        1901是质数        1903=11*173        1907是质数        1909=23*83        1913是质数        1919=19*101
~~~~~~~       1921=17*113        1927=41*47        1931是质数        1933是质数        1937=13*149        1939=7*277        1943=29*67        1949是质数
~~~~~~~       1951是质数        1957=19*103        1961=37*53        1963=13*151        1967=7*281        1969=11*179        1973是质数        1979是质数
~~~~~~~       1981=7*283        1987是质数        1991=11*181        1993是质数        1997是质数        1999是质数        2003是质数        2009=7*7*41
~~~~~~~       2011是质数        2017是质数        2021=43*47        2023=7*17*17        2027是质数        2029是质数        2033=19*107        2039是质数
~~~~~~~       2041=13*157        2047=23*89        2051=7*293        2053是质数        2057=11*11*17        2059=29*71        2063是质数        2069是质数
~~~~~~~       2071=19*109        2077=31*67        2081是质数        2083是质数        2087是质数        2089是质数        2093=7*13*23        2099是质数
~~~~~~~       2101=11*191        2107=7*7*43        2111是质数        2113是质数        2117=29*73        2119=13*163        2123=11*193        2129是质数
~~~~~~~       2131是质数        2137是质数        2141是质数        2143是质数        2147=19*113        2149=7*307        2153是质数        2159=17*127
~~~~~~~       2161是质数        2167=11*197        2171=13*167        2173=41*53        2177=7*311        2179是质数        2183=37*59        2189=11*199
~~~~~~~       2191=7*313        2197=13*13*13        2201=31*71        2203是质数        2207是质数        2209=47*47        2213是质数        2219=7*317
~~~~~~~       2221是质数        2227=17*131        2231=23*97        2233=7*11*29        2237是质数        2239是质数        2243是质数        2249=13*173
~~~~~~~       2251是质数        2257=37*61        2261=7*17*19        2263=31*73        2267是质数        2269是质数        2273是质数        2279=43*53
~~~~~~~       2281是质数        2287是质数        2291=29*79        2293是质数        2297是质数        2299=11*11*19        2303=7*7*47        2309是质数
~~~~~~~       2311是质数        2317=7*331        2321=11*211        2323=23*101        2327=13*179        2329=17*137        2333是质数        2339是质数
~~~~~~~       2341是质数        2347是质数        2351是质数        2353=13*181        2357是质数        2359=7*337        2363=17*139        2369=23*103
~~~~~~~       2371是质数        2377是质数        2381是质数        2383是质数        2387=7*11*31        2389是质数        2393是质数        2399是质数
~~~~~~~       2401=7*7*7*7        2407=29*83        2411是质数        2413=19*127        2417是质数        2419=41*59        2423是质数        2429=7*347
~~~~~~~       2431=11*13*17        2437是质数        2441是质数        2443=7*349        2447是质数        2449=31*79        2453=11*223        2459是质数
~~~~~~~       2461=23*107        2467是质数        2471=7*353        2473是质数        2477是质数        2479=37*67        2483=13*191        2489=19*131
~~~~~~~       2491=47*53        2497=11*227        2501=41*61        2503是质数        2507=23*109        2509=13*193        2513=7*359        2519=11*229
~~~~~~~       2521是质数        2527=7*19*19        2531是质数        2533=17*149        2537=43*59        2539是质数        2543是质数        2549是质数
~~~~~~~       2551是质数        2557是质数        2561=13*197        2563=11*233        2567=17*151        2569=7*367        2573=31*83        2579是质数
~~~~~~~       2581=29*89        2587=13*199        2591是质数        2593是质数        2597=7*7*53        2599=23*113        2603=19*137        2609是质数
~~~~~~~       2611=7*373        2617是质数        2621是质数        2623=43*61        2627=37*71        2629=11*239        2633是质数        2639=7*13*29
~~~~~~~       2641=19*139        2647是质数        2651=11*241        2653=7*379        2657是质数        2659是质数        2663是质数        2669=17*157
~~~~~~~       2671是质数        2677是质数        2681=7*383        2683是质数        2687是质数        2689是质数        2693是质数        2699是质数
~~~~~~~       2701=37*73        2707是质数        2711是质数        2713是质数        2717=11*13*19        2719是质数        2723=7*389        2729是质数
~~~~~~~       2731是质数        2737=7*17*23        2741是质数        2743=13*211        2747=41*67        2749是质数        2753是质数        2759=31*89
~~~~~~~       2761=11*251        2767是质数        2771=17*163        2773=47*59        2777是质数        2779=7*397        2783=11*11*23        2789是质数
~~~~~~~       2791是质数        2797是质数        2801是质数        2803是质数        2807=7*401        2809=53*53        2813=29*97        2819是质数
~~~~~~~       2821=7*13*31        2827=11*257        2831=19*149        2833是质数        2837是质数        2839=17*167        2843是质数        2849=7*11*37
~~~~~~~       2851是质数        2857是质数        2861是质数        2863=7*409        2867=47*61        2869=19*151        2873=13*13*17        2879是质数
~~~~~~~       2881=43*67        2887是质数        2891=7*7*59        2893=11*263        2897是质数        2899=13*223        2903是质数        2909是质数
~~~~~~~       2911=41*71        2917是质数        2921=23*127        2923=37*79        2927是质数        2929=29*101        2933=7*419        2939是质数
~~~~~~~       2941=17*173        2947=7*421        2951=13*227        2953是质数        2957是质数        2959=11*269        2963是质数        2969是质数
~~~~~~~       2971是质数        2977=13*229        2981=11*271        2983=19*157        2987=29*103        2989=7*7*61        2993=41*73        2999是质数
~~~~~~~       3001是质数        3007=31*97        3011是质数        3013=23*131        3017=7*431        3019是质数        3023是质数        3029=13*233
回复 支持 反对

使用道具 举报

 楼主| 发表于 2026-2-19 06:41 | 显示全部楼层
本帖最后由 ysr 于 2026-2-20 01:41 编辑

在一个长的像下面这样的数列里,是否有无穷个素数?

“a, a+d, a+2d, a+3d, a+4d, ...”(这就是“算术级数”)

条件:在这个算术级数里,首项 a 与公差 d 互质。

这个问题的学术表达就是:“首项与公差互质的算术级数中含有无穷多个素数。”

为什么条件要求 a(首项)与 d(公差)互质?如果二者不互质,这个算术级数全部是“合数”,没有一个素数。如果,a=3,d=6;那么,算术级数为“3,9,15,21,27,...”这不是证明的对象。

假设:a=1,d=4;

狄利克雷要解决的就是“1, 5, 9, 13, 17, 21, 25, 29, ...”这个数列是否像全体自然数一样,包含着无究个素数?


这个命题用不着那么复杂的函数公式就可以严格证明!!

狄利克雷猜想确定无疑是正确的!
证明其实也简单(且不止一种方法):
方法三:证明:素数是无穷多的,把无穷多素数平均分成有限份,每一份当然是无穷多的。dn+r其中1≤r<d且d和r互质,就是素数的几率公式。公式个数就是φ(d),而φ(d)是有限数,φ(d)是欧拉函数,表示的是d内和d互质的整数的个数。等差数列dn+r,就是把除了d中的素因子以外的素数平均分成了φ(d)等份。
证明的关键是如何证明大致把除了d中的素因子以外的素数平均分成φ(d)等份?
不考虑是否是素数的情况肯定d中因子及其倍数以外的整数分成了φ(d)等份,因为这些整数是依次交替出现的。而考虑是素数还是合数的时候情况虽然复杂,但道理其实简单。
由于产生素数的概率基本不变,且在大范围内大致上是均匀的(这个专家证明过了),所以,各类型的素数大致是相等的,是平均分开的。
各类型的素数大致上是依次交替出现的,但在有限项内有个别情况会有某类型的素数在某个位置会缺少,缺少处的整数实际是合数。随着项数增大缺少的情况会增多,但大致上是均匀的各类型的依次都会有。
所以,狄利克雷猜想是正确的成立的,证毕!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2026-2-21 16:14 | 显示全部楼层
网络资料显示,这个定理早已被证明,谁还说是猜想呢?截图如下:

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-2-26 20:18 , Processed in 0.129137 second(s), 16 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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