Code : Tout sélectionner
Dim s.s(1)
s(0) = " = 0 donc c'est un premier"
fact + 1
Debug Chr($8000)
For n = 2 To 21
Debug Rset(Str(fact), 24, " ") + "+1 % " + Str(n) + s(Bool((fact + 1) % n) )
fact * n
Next
Code : Tout sélectionner
Dim s.s(1)
s(0) = " = 0 donc c'est un premier"
fact + 1
Debug Chr($8000)
For n = 2 To 21
Debug Rset(Str(fact), 24, " ") + "+1 % " + Str(n) + s(Bool((fact + 1) % n) )
fact * n
Next
C'est normal : tu n'es pas sur un ordi en carton avec "Chewing-Dose 10" dessus.Mindphazer a écrit : lun. 03/oct./2022 14:28 A part afficher un caractère chinois (ou japonais, je ne suis pas expert), ça ne fait rien d'autre chez moi...
J'ai déjà vu une chinoise et une japonaise s'engueuler : il vaut mieux dicerner, c'est très différent, je te l'assure, tellement opposé qu'à part sourire jaune, je ne pouvais plus rien faire...Mindphazer a écrit : lun. 03/oct./2022 14:28A part afficher un caractère chinois (ou japonais, je ne suis pas expert),[...]
SisiOllivier a écrit : lun. 03/oct./2022 15:05 C'est normal : tu n'es pas sur un ordi en carton avec "Chewing-Dose 10" dessus
Code : Tout sélectionner
Debug "Bonjour"
Debug Chr($8000)
Debug "Bonjour"
Ah, c'est sûr, il y a un mur. Tout est parfait jusqu'à 21. Après, c'est dead. Tu peux essayer avec des grands nombres (chaînes ou en binaire dur) : tu vas déceler quelques nombres premiers supplémentaires, et puis tu te reprends un mur (mémoire saturée).ArS a écrit :J'avoue être bien loin de m'intéresser aux nombres 1ers mais ton code est rigolo.
Et tu pouvais pas le dire plus tôt que je m'étais piné ?Mindphazer a écrit : lun. 03/oct./2022 14:28 A part afficher un caractère chinois (ou japonais, je ne suis pas expert), ça ne fait rien d'autre chez moi...
耀
2+1 % 2 = 0 donc c'est un premier
3+1 % 3 = 0 donc c'est un premier
7+1 % 4
Heuuuuuuu... Pas chez moi. Le premier bonjour et le second ont absolument la même police, qui n'est pas Courier :Ollivier a écrit : lun. 03/oct./2022 22:59Le caractère chinois active une police type "Courier" pour permettre de respecter les colonnes (les caractères ont la même largeur).Code : Tout sélectionner
Debug "Bonjour" Debug Chr($8000) Debug "Bonjour"
J'ai préféré te laisser te corrigerOllivier a écrit : lun. 03/oct./2022 23:18 Et tu pouvais pas le dire plus tôt que je m'étais piné ?
Il y a un "+ 1" dans (fact + 1) que j'ai laissé en trop... C'est 1+1 %2 qui donne zéro, etc...
Affichage corrigéMindphazer a écrit : mar. 04/oct./2022 8:27J'ai préféré te laisser te corrigerOllivier a écrit : lun. 03/oct./2022 23:18 Et tu pouvais pas le dire plus tôt que je m'étais piné ?
Il y a un "+ 1" dans (fact + 1) que j'ai laissé en trop... C'est 1+1 %2 qui donne zéro, etc...![]()
C'est un mur : incalculable, par manque de temps à la main. Par informatique, c'est plus rapide, mais si on veut vérifier la primalité de tous les nombres, ça reste trop long aussi.SPH a écrit : mar. 04/oct./2022 8:26 Pour en revenir au thème, va t'en prouver que 127 est un nombre premier !!
Le chiffre à moduler est trop "immaniable"...![]()
Code : Tout sélectionner
Procedure isPrime(p)
Protected a = p - 1
Protected i
For i = (p - 2) to 2 step -1
a * i
a % p
next
a + 1
ProcedureReturn Bool(a = p)
EndProcedure
Code : Tout sélectionner
OpenConsole()
For i = 1 to 10
n = pow(10, i) - 7
t0 = elapsedMilliseconds()
isPrime(n)
t1 = elapsedMilliseconds()
PrintN(str(i) + " chiffre(s) : " + chr(9) + str(t1 - t0) + " ms")
Next
Input()