J'utilise Pari / GP pour tester la (pseudo) primalité d'une séquence de nombres f(n), où f(n) est une fonction. J'ai parallélisé le code comme

test(a) = parfor(n = 1, +oo, if(ispseudoprime(f(n)), print("PRIME "n));)

Cela fonctionne très bien mais j'aimerais aussi savoir quel numéro est testé. Je peux bien sûr ajouter simplement print(n) après le if. Le problème est que ispseudoprime(a(n)) peut prendre un certain temps pour n tout en étant très rapide pour n+1. Le calcul étant parallèle, la sortie deviendrait rapidement un gâchis: je verrais la liste des nombres qui ont été testés, mais je n'ai aucune indication sur quel nombre est testé à un moment donné (l'idée est que si le programme est passer beaucoup de temps sur un numéro, il est de plus en plus susceptible d'être premier, alors j'aimerais le savoir).

Y a-t-il un moyen simple de faire cela? Merci!

0
Ricky 25 févr. 2021 à 15:46

1 réponse

Meilleure réponse

J'ai résolu (d'une manière très sale probablement) comme ça

test(a) = parfor(n = 1, +oo, write("started",n); if(ispseudoprime(f(n)), print("PRIME "n)); write("done",n))

Puis grep -v -f done started donne ce que je veux.

0
Ricky 25 févr. 2021 à 13:03