Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

[HS] Traduction d'un code Ubasic en VBA

12 réponses
Avatar
garnote
Bonjour, Bonjour

Mon obsession des nombres premiers me pousse
à vouloir traduire un code Ubasic en VBA.
Ce code permet de trouver le n ième nombre premier
et je veux le traduire correctemnt en espérant qu'il
soit plus rapide que ma mienne macro qui a pris
36 minutes pour trouver le millionième nombre premier
(15 485 863).

Voici le code Ubasic :

10 input N:clr time:'pnsmr.ub
20 S1=0:Z=2*(int(N*log(N))+1)
30 for K=1 to Z
40 S2=0
50 for J=2 to K
60 S3=0
70 for L=1 to J
80 S3=S3+J\L-(J-1)\L
90 next L
100 S2=S2+1+(2-S3)\J
110 next J
120 S1=S1+1-S2\N
130 next K
140 print "The prime";N;"-th is=";S1+1;
150 if S1+1<>prm(N) then print "Error":end
160 print "Verified y Right",time:end

Et voici ma tentative qui ne mène nulle part :

Sub pn()
n = 5
S1 = 0: Z = 2 * (Int(n * Log(n)) + 1)
For k = 1 To Z
S2 = 0
For j = 2 To k
S3 = 0
For L = 1 To j
S3 = S3 + j \ L - (j - 1) \ L
Next L
S2 = S2 + 1 + (2 - S3) \ j
Next j
S1 = S1 + 1 - S2 \ n
Next k
Debug.Print "The prime"; n; "-th is="; S1 + 1;
End Sub

Je n'ai pas tenu compte du clr time:'pnsmr.ub
de l'instruction 10 ni de l'instruction 150 dont
je ne comprends pas le prm(N).
Je n'ai pas tenu compte non plus de l'instruction 160.

Quelqu'un saurait-il me dépatouiller ?

Serge
P.-S. : J'espère que Trirème trouvera mon sujet un tantinet évocateur ;-)

2 réponses

1 2
Avatar
isabelle
oups, j'ai parlé trop vite, déjà à n = 10 ^ 7
y'a mémoire insuffisante :-(

isabelle



Gros projet ;-)
En tous cas, le voici le milliardième nombre premier :
22 801 763 489



merci serge, je vais le lancer ce soir (car soiré cinéma en vue), si le
résultat est exact,
je relancerai cette nuit avec n = 10 ^ 12 ça va chauffer ;-)

isabelle



Avatar
garnote
Et parlant de calculs impossibles (!), j'ai trouvé
un truc pour calculer de très gros modulo.
Par exemple, 666^666 Mod 66 ;-)

Serge

"isabelle" a écrit dans le message de news:
oups, j'ai parlé trop vite, déjà à n = 10 ^ 7
y'a mémoire insuffisante :-(

isabelle



Gros projet ;-)
En tous cas, le voici le milliardième nombre premier :
22 801 763 489



merci serge, je vais le lancer ce soir (car soiré cinéma en vue), si le résultat est exact,
je relancerai cette nuit avec n = 10 ^ 12 ça va chauffer ;-)

isabelle





1 2