Bisam wrote:Il n'y a aucun rapport entre les 3 problèmes suivants :
1) Déterminer si un entier donné est premier ou non (ce que fait la fonction "isprime")
2) Déterminer la liste de tous les entiers premiers inférieurs ou égaux à un entier donné (ce que fait le crible d'Ératosthène)
3) Factoriser un entier donné.
Dans le premier cas, on connait des algorithmes très efficaces, capables de décider en quelques millièmes de secondes si des nombres de quelques centaines de chiffres sont premiers ou non.
Dans le 2ème cas, on ne connaît pas grand chose de mieux que le crible d'Ératosthène lui-même... mais il permet déjà d'établir une telle liste en quelques secondes pour des entiers ayant moins de 10 chiffres.
Dans le 3ème cas, on connaît plein d'algorithmes, la plupart étant plus ou moins efficaces suivant le champ d'application, c'est-à-dire suivant la forme des nombres auxquels on les applique. C'est un problème bien plus complexe que les deux précédents... et c'est justement sur le fait que ce soit complexe que se basent une grande partie des systèmes de cryptage.
Yep, you are right. I am trying to find the code behind the isPrime() function in TI Nspire CX-CAS, I made my own isPrime function with Miller-Rabin prime testing but it is not enough because it is slow with large numbers (>2^64), and I also see that a numbertheory library uses a for and isPrime() as a condition to enumerate all prime numbers in a range and it is faster than Erastosthenes sieve, but this does not make sense because the sieve has a complexity of O (nlog(log(log(n)))) and a for has a complexity of O (n*isPrime_complexity) then, isPrime has a complexity less than O(log(log(n)))!? Is this the reason why Miller-Rabin prime testing is slow compared to isPrime? But at the same time, isPrime is a really powerful and efficient algorithm. I looked for some algorithms to solve this task, but Miller Rabin is one of the most efficient in smaller numbers and isPrime is beating it. Is there any way to look at the code of this function?