critor wrote:Merci @Afyu.

Cela n'a pas l'air de déclencher de problème ici, mais le
for k in range(2,floor(sqrt(n)))
me semble également très maladroit.
La valeur retour de
sqrt(n)
est un flottant et donc une valeur pas forcément exacte, et le test d'arrêt de la boucle est donc une comparaison d'un entier à la partie entière d'un flottant possiblement approché.
Tu veux dire, par exemple, que si la racine carrée de 9 est évaluée à 2.9999999996 alors comme la partie entière de cette estimation est 2, le dernier test effectué sera la division euclidienne de 9 par 2, qui donne un reste différent de 0. Le test de la division euclidienne de 9 par 3 (qui donne un reste nul, et indique donc que 9 n'est pas premier) n'étant pas effectué, le nombre 9 sera estimé comme étant premier, alors qu'il ne l'est pas.
On pourrait alors remplacer par
for k in range(2,floor(sqrt(n))+2)
afin d'être sûr de ne pas oublier une valeur à tester. Que proposes-tu, sinon ?