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