Jean-Luc ARNAUD on Sun, 20 Nov 2022 12:05:45 +0100 |
[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]
Fonction parforprime et sortie en désordre |
Bonjour,
Toujours en phase de découverte de Pari/GP, je ne trouve pas de solution à ce problème.
La commande suivante :
? forprime(i=2,100,if(ispseudoprime(2^i-1,1),print ("2^",i,"-1 est Premier"),print (strchr(9),"2^",i,"-1 est non Premier")))
fournit bien le résultat escompté, ci-dessous :
2^2-1 est Premier
2^3-1 est Premier
2^5-1 est Premier
2^7-1 est Premier
2^11-1 est non Premier
2^13-1 est Premier
2^17-1 est Premier
2^19-1 est Premier
2^23-1 est non Premier
2^29-1 est non Premier
2^31-1 est Premier
2^37-1 est non Premier
2^41-1 est non Premier
2^43-1 est non Premier
2^47-1 est non Premier
2^53-1 est non Premier
2^59-1 est non Premier
2^61-1 est Premier
2^67-1 est non Premier
2^71-1 est non Premier
2^73-1 est non Premier
2^79-1 est non Premier
2^83-1 est non Premier
2^89-1 est Premier
2^97-1 est non Premier
Par contre, la même commande en mode MT :
? parforprime(i=2,100,if(ispseudoprime(2^i-1,1),print
("2^",i,"-1 est Premier"),print (strchr(9),"2^",i,"-1 est non
Premier")))
fournit un résultat en désordre :
2^2^3-1 est Premier
2-1 est Premier
2^5-1 est Premier
2^7-1 est Premier
2^17-1 est Premier
2^2^13-1 est Premier
19-1 est Premier
2^ 11-1 est non Premier
2^23-1 est non Premier
2^ 292^-1 est non Premier
2^ 2^79 2^2^8389-1 est non Premier2^
2^2^61 -1 est Premier2^67
37-1 est non Premier
31 -1 est Premier2^
7343-1 est Premier 2^
-1 est non Premier -1 est non Premier
41-1 est non Premier
-1 est non Premier-1 est non Premier59
2^
2^972^-1 est non Premier
-1 est non Premier
47-1 est non Premier
2^71-1 est non Premier
53-1 est non Premier
Je comprends bien la raison de ce désordre, dû au fait que le MT
retourne les résultats au fur et à mesure qu'ils sont calculés,
dans un ordre non linéaire.
Ma question porte plutôt sur la manière d'éviter cela, si elle
existe (en dehors de se passer du MT) : stocker les résultats dans
une variable chaîne ? Ou option de print() que je n'aurais pas
trouvée ? Ou autre ?
Merci pour votre aide.
-- Jean-Luc Arnaud