PDA

View Full Version : Lucas lehmer


albeganasa
02-06-2007, 13:08
Spero di non essere OT...ma vorrei implementare un programmino in Vb.net Basato sull'algoritmo di lucal lehmer...solo che non saprei nemmeno da dove iniziare!! conosco le definizioni e gli enunciati, solo che non so applicarli..qualcuno mi sa aiutare? grazie..

Il Capitano
02-06-2007, 18:02
A occhio e croce hai sbagliato sezione. Dovresti postare in programmazione :)

PGI-Bis
02-06-2007, 23:41
Dire che il mio VisualBasic è arrugginito sarebbe un complimento. Comunque, Wikipedia alla mano, pare che questo test di Lucas-Lehmer si possa fare dicendo:

s vale 4
m vale 2 elevato alla p meno 1
per p - 2 volte
s vale s * s - 2 modulo m
se s vale zero allora m è primo altrimenti no

Un'ipotetica funzione VisualBasic (molto ipotetica) che faccia questo test per un numero M = 2 ^ p potrebbe essere:

Function LucasLehmer(p)
s = 4
m = (2 ^ p) - 1
do
s = ((s * s) - 2) Mod m
p = p - 1
Loop While p > 2
LucasLehmer = False
If s = 0 Then
LucasLehmer = True
End If
End Function

albeganasa
03-06-2007, 13:23
Dire che il mio VisualBasic è arrugginito sarebbe un complimento. Comunque, Wikipedia alla mano, pare che questo test di Lucas-Lehmer si possa fare dicendo:

s vale 4
m vale 2 elevato alla p meno 1
per p - 2 volte
s vale s * s - 2 modulo m
se s vale zero allora m è primo altrimenti no
Un'ipotetica funzione VisualBasic (molto ipotetica) che faccia questo test per un numero M = 2 ^ p potrebbe essere:

Function LucasLehmer(p)
s = 4
m = (2 ^ p) - 1
do
s = ((s * s) - 2) Mod m
p = p - 1
Loop While p > 2
LucasLehmer = False
If s = 0 Then
LucasLehmer = True
End If
End Function

Interessante..Dovrebbe quindi essere:

Public Function LucasLehmer (byval p as integer)
Dim s as integer=4
Dim m as integer=pow(2,p)-1

do
s = ((s * s) - 2) % m
p = p - 1
loop until p > 2

if s = 0 Then
LucasLehmer = True
else
LucasLehmer =False
End If

End Function