42 lines
708 B
Text
42 lines
708 B
Text
Procedure.i isPrime(n)
|
|
Protected k
|
|
|
|
If n = 2 : ProcedureReturn #True
|
|
ElseIf n <= 1 Or n % 2 = 0 : ProcedureReturn #False
|
|
Else
|
|
For k = 3 To Int(Sqr(n)) Step 2
|
|
If n % k = 0
|
|
ProcedureReturn #False
|
|
EndIf
|
|
Next
|
|
EndIf
|
|
|
|
ProcedureReturn #True
|
|
EndProcedure
|
|
|
|
Procedure.i isWeiferich(p)
|
|
Protected q, p2
|
|
|
|
If Not isPrime(p) : ProcedureReturn #False : EndIf
|
|
q = 1
|
|
p2 = Pow(p, 2)
|
|
While p > 1
|
|
q = (2*q) % p2
|
|
p - 1
|
|
Wend
|
|
If q = 1
|
|
ProcedureReturn #True
|
|
Else
|
|
ProcedureReturn #False
|
|
EndIf
|
|
EndProcedure
|
|
|
|
OpenConsole()
|
|
PrintN("Wieferich primes less than 5000: ")
|
|
For i = 2 To 5000
|
|
If isWeiferich(i)
|
|
PrintN(Str(i))
|
|
EndIf
|
|
Next i
|
|
Input()
|
|
CloseConsole()
|