Basic Univers
Procedure PrimeEuler(Maximum)
Repeat
n = Random(Maximum)
Until n > 1 And n <> 41
ProcedureReturn n*n - n + 41
EndProcedure
Ret.s = Chr(13)+ Chr(10)
Restart :
StT = ElapsedMilliseconds()
Start :
Repeat
p = PrimeEuler(208)
Until p > 128
Repeat
q = PrimeEuler(208)
Until q <> p And q > 128
n.l = p*q
qn.l =(p - 1)*(q - 1)
Repeat
e = Random(qn)
Until qn%e > 0
TmpNe = 1
d = 1
Euler = n - p - q + 1
Repeat
TmpNe = TmpNe + 1
d = Round(TmpNe * Euler / e, 1)
If TmpNe > 20
Goto Start
EndIf
Until((d * e) % Euler) = 1
EnT = ElapsedMilliseconds()
rep = MessageRequester("Done !", "Start time : " + Str(StT)+ Ret +"End time : " + Str(EnT)+ Ret +"Done in " + Str(EnT - StT)+" ms => " + Str((EnT - StT)/1000)+" s" + Ret +"p = " + Str(p)+", q = " + Str(q)+ Ret +"n = " + Str(n)+", e = " + Str(e)+", d = " + Str(d)+ Ret +"Restart ?", #PB_MessageRequester_YesNo | #MB_ICONQUESTION)
If rep = 6
Goto Restart
EndIf
End