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