Ton programme ne marche pas: il exclut le nombre 2. 2 est divisible par 2 donc si n (n≠2) est divisible par 2 et aucun autre nombre par exemple, il sera qualifié de premier. D'ailleurs pourquoi 3*(k-2) opérations à 1:20 ?
Je pense que les deux incompréhensions sont liées: * `range(a, b)` donne tous les entiers de `a` (inclus !) à `b` (exclu) et si on les compte, il y en a bien b-a. Si on prend par exemple `range(2, k)`, alors la boucle s'exécute k-2 fois. Prenez par exemple k=10, alors `i` prend les valeurs 2, 3, 4, 5, 6, 7, 8 et finalement 9 (car 10 est exclu), soit huit valeurs différentes, ce qui est bien égal à 10 - 2 ; * par conséquent, à 1:20, comme on fait au plus trois opérations à chacun des k-2 tours de la boucle `range(2, k)`, on a au plus 3*(k-2) opérations ; * finalement, pour l'affirmation qui dit que le programme ne prend pas en compte 2, elle est invalidée par le fait que `range` **inclut** le premier argument (donc `i` et `k` prennent tous deux la valeur 2 au départ donc on vérifie bien les divisions par 2). La seule fois où la seconde boucle ne s'exécute pas, c'est justement quand `k` vaut 2 (car 2 ne peut pas à la fois être inclus et exclu donc la boucle s'exécute 2-2 = 0 fois), donc 2 est bien qualifié de nombre premier et c'est le seul nombre pair pour lequel c'est le cas. J'espère que cela vous aura aidé à y voir plus clair.
Ton programme ne marche pas: il exclut le nombre 2. 2 est divisible par 2 donc si n (n≠2) est divisible par 2 et aucun autre nombre par exemple, il sera qualifié de premier.
D'ailleurs pourquoi 3*(k-2) opérations à 1:20 ?
Je pense que les deux incompréhensions sont liées:
* `range(a, b)` donne tous les entiers de `a` (inclus !) à `b` (exclu) et si on les compte, il y en a bien b-a. Si on prend par exemple `range(2, k)`, alors la boucle s'exécute k-2 fois. Prenez par exemple k=10, alors `i` prend les valeurs 2, 3, 4, 5, 6, 7, 8 et finalement 9 (car 10 est exclu), soit huit valeurs différentes, ce qui est bien égal à 10 - 2 ;
* par conséquent, à 1:20, comme on fait au plus trois opérations à chacun des k-2 tours de la boucle `range(2, k)`, on a au plus 3*(k-2) opérations ;
* finalement, pour l'affirmation qui dit que le programme ne prend pas en compte 2, elle est invalidée par le fait que `range` **inclut** le premier argument (donc `i` et `k` prennent tous deux la valeur 2 au départ donc on vérifie bien les divisions par 2). La seule fois où la seconde boucle ne s'exécute pas, c'est justement quand `k` vaut 2 (car 2 ne peut pas à la fois être inclus et exclu donc la boucle s'exécute 2-2 = 0 fois), donc 2 est bien qualifié de nombre premier et c'est le seul nombre pair pour lequel c'est le cas.
J'espère que cela vous aura aidé à y voir plus clair.
je nai pas compris ta remarque à 2:29 sur la racine explique moi stp
Si vous avez que a * b = c avec a = sqrt(c) (essayez pour voir).
Mais merci énormément ça va vraiment droit au but
merci pour le cours !
Avec plaisir !