Bonjour
Voici l'énoncé de l'exercice sur lequel je bloque :
A. Un premier algorithme
Saisir N
D prend la valeur 2
F prend la valeur []
Tant que n<1 faire
Si D est un diviseur de N, ajouter D à la liste F
N prend la valeur N/D
Sinon D prend la valeur D+1
Fin Si
Fin Tant que
Afficher la liste F
1) Appliquer à la main l'algorithme ci-contre à l'entier N=1400. Quelle est la liste affichée ?
2) Justifier que la liste F procure la décomposition en facteurs premiers de N.
B. Des améliorations successives
1) Les diviseurs premiers de N peuvent être 2 ou des entiers premiers impairs. Modifier l'algorithme précédent pour traiter le cas du diviseur 2 éventuel puis les autres diviseurs premiers possibles allant de 2 en 2.
2) On sait qu'il suffit de tester les diviseurs inférieurs ou égaux à E(√ N) pour tester si un entier A est premier. Modifier l'algorithme pour réduire le nombre de divisions à effectuer.
3) On sait que les diviseurs premiers de N peuvent être 2, 3 ou sont des entiers premiers supérieurs ou égaux à 5, de la forme 6k-1 ou 6k+1 pour k entier naturel, k>0. Modifier l'algorithme pour chercher les facteurs premiers 2 et 3 éventuels puis les autres facteurs premiers.
J'ai réussi à faire la partie A, mais je bloque à la partie B :
Question 1 : mon algorithme ne marche pas (calculatrice TI 83)
Prompt N
0→K
2→D
EffListe L1
0→I
While N>1
If N/D = partEnt(N/D)
I+1→I
D→L1(I)
Else
K+1→K
2K+1→D
End
End
Disp L1
Question 3 : Je ne vois pas quoi modifier
Merci de votre aide !
salut
je ne vois pas à quoi sert la variable k
Lire n
i = 0
Pour d = 2 Jusqu'à 3
Tant que n/d = E(n/d)
L(i) = d
i = i + 1
Tant que d =< n
Tant que n/d = E(n/d)
L(i) = d
i = i + 1
d = d + 2
voila pour l'essentiel du programme ...
à toi de faire ce qu'il faut pour répondre à la partie B
Merci mais je suis encore bloquée..
Je ne sais pas comment écrire mon programme
La variable K me sert pour répondre à la question B 1), puisqu'il faut traiter le cas du diviseur 2 puis les autres diviseurs premiers possibles allant de 2 en 2 d'où " 2K+1→D "
ok ..
ouais enfin à partir de d = 3 tu peux toujours faire d = d + 2 ...
sinon pour les programmes il y a des mode d'emploi sur le site des fabricants ...
J'ai trouvé mes erreurs et mon algorithme fonctionne ! :
Prompt N
0→K
2→D
EffListe L1
0→I
While N>1
If N/D = partEnt(N/D)
Then
I+1→I
D→L1(I)
N/D→N
Else
K+1→K
2K+1→D
End
End
Disp L1
Vous devez être membre accéder à ce service...
Pas encore inscrit ?
1 compte par personne, multi-compte interdit !
Ou identifiez-vous :