Exercice — dans l'esprit des sujets d'informatique
- Écrire l'algorithme itératif d'un test de primalité `Premier(r)` pour un entier naturel : on incrémente un diviseur tant que et (esprit corrigé bac 2015, `DEF FN Premier`).
- Pourquoi la borne (racine) suffit-elle ? Relier au facteur complémentaire .
- Le corrigé 2015 utilise `Premier(t[i])` et `Premier((t[i]-1) div 2)` pour ranger certains entiers. En une phrase, que teste la seconde condition sur l'entier (lien avec un diviseur particulier) ?
Voir la correction commentéeAprès avoir posé votre démarche
1. Test de primalité itératif (corrigé 2015).
```
DEF FN Premier (r : entier) : booléen
Variables d : entier
Début
d ← 1
Répéter
d ← d + 1
Jusqu'à (r mod d = 0) ou (d > racinecarré(r))
Retourner (d > racinecarré(r))
Fin
```
Aucun diviseur trouvé avant la racine ⇒ l'entier est premier.
2. Si un facteur divisait , le cofacteur serait un diviseur déjà rencontré. D'où la borne.
3. `(t[i]-1) div 2` : on demande aussi que soit premier (filtre supplémentaire du rangement 2015 — couple d'entiers liés par une relation de diviseur/moitié).