45 lines
1.1 KiB
Text
45 lines
1.1 KiB
Text
#include "isprime.bas"
|
|
|
|
Function PrimalityPretest(k As Integer) As Boolean
|
|
Dim As Integer ppp(1 To 8) = {3,5,7,11,13,17,19,23}
|
|
For i As Integer = 1 To Ubound(ppp)
|
|
If k Mod ppp(i) = 0 Then Return (k <= 23)
|
|
Next i
|
|
Return True
|
|
End Function
|
|
|
|
Function isChernick(n As Integer, m As Integer) As Boolean
|
|
Dim As Integer i, t = 9 * m
|
|
|
|
If Not PrimalityPretest(6 * m + 1) Then Return False
|
|
If Not PrimalityPretest(12 * m + 1) Then Return False
|
|
|
|
For i = 1 To n-1
|
|
If Not PrimalityPretest(t * (2 ^ i) + 1) Then Return False
|
|
Next i
|
|
|
|
If Not isPrime(6 * m + 1) Then Return False
|
|
If Not isPrime(12 * m + 1) Then Return False
|
|
|
|
For i = 1 To n - 2
|
|
If Not isPrime(t * (2 ^ i) + 1) Then Return False
|
|
Next i
|
|
Return True
|
|
End Function
|
|
|
|
Dim As Uinteger multiplier, k, m = 1
|
|
For n As Integer = 3 To 9
|
|
multiplier = Iif (n > 4, 2 ^ (n-4), 1)
|
|
If n > 5 Then multiplier *= 5
|
|
|
|
k = 1
|
|
Do
|
|
m = k * multiplier
|
|
If isChernick(n, m) Then
|
|
Print "a(" & n & ") has m = " & m
|
|
Exit Do
|
|
End If
|
|
k += 1
|
|
Loop
|
|
Next n
|
|
Sleep
|