Bonjour,
j'ai eu ceci comme sujet:
"imaginez un programme sur ALGOBOX qui permet de savoir si un nombre entier n est premier en indiquant par exemple:
"88 757 n'est pas premier car il est divisible par 3". Ou "23 est un nombre premier".
j'ai alors créé cet algorithme
"1 VARIABLES
2 N EST_DU_TYPE NOMBRE
3 D EST_DU_TYPE NOMBRE
4 A EST_DU_TYPE NOMBRE
5 DEBUT_ALGORITHME
6 LIRE N
7 D PREND_LA_VALEUR 1
8 TANT_QUE (D*D<=N) FAIRE
9 DEBUT_TANT_QUE
10 D PREND_LA_VALEUR D+1
11 A PREND_LA_VALEUR N/D
12 SI (A=floor(A)) ALORS
13 DEBUT_SI
14 AFFICHER N
15 AFFICHER "n'est pas premier car il est divisible par"
16 AFFICHER D
17 FIN_SI
18 SINON
19 DEBUT_SINON
20 AFFICHER N
21 AFFICHER "est un nombre premier"
22 FIN_SINON
23 FIN_TANT_QUE
24 FIN ALGORITHME"
mais il ne marche pas.
quelqun peut e dire où est le problème?
merci d'avance
azerty012
Bonjour,
Ton algorithme ne marche pas car la condition de sortie de la boucle se fait lorsque D*D>=N
Or il faudrait que la sortie de la boucle se fasse lorsque (D*D>=N) ou (A=Floor(A))
Autrement dit, en langage naturel :
Début
Lire(N)
D reçoit 2 //inutile de commencer avec D=1
Tant que (N n'est pas divisible par D) ET (D*D<=N)
D reçoit D+1
FinTant Que
//ici on sait que (N est divisible par D) OU (D>N)
Si N est divisible par D
alors Afficher (N, "est divisible par ",D)
sinon Afficher (N, "est premier")
FinSi
Fin
Remarque : il est plus simple d'utiliser une structure du type Répéter ... jusqu'à, mais je crois bien qu'elle n'exsite pas dans Algobox
bonjour,
oui je suis d'accord avec l'algo de patrice rabiller en langage naturel , voici ce que j'ai rentre c'est pas bien beau avec mon a=0.5 au debut mais je crois (sur 2 ou 3 tests qu'il marche)
@ patrice rabiller: comment traduirais tu ceci en langage algobox? " Tant que (N n'est pas divisible par D)"
@sloreviv: l'algorithme medonne ceci: "***L'algorithme contient une erreur : impossible de le lancer***
***Vérifiez la syntaxe des affectations et des conditions***". Qu'ais je mal fait?
merci a vous deux pour ces premières réponses qui m'aident déja beaucoup je suis très touché
Voilà un exemple que tu peux copier/coller en mode d'édition "éditeur de texte" :
VARIABLES
n EST_DU_TYPE NOMBRE
d EST_DU_TYPE NOMBRE
q EST_DU_TYPE NOMBRE
divise EST_DU_TYPE NOMBRE
x EST_DU_TYPE NOMBRE
DEBUT_ALGORITHME
LIRE n
divise PREND_LA_VALEUR 0
POUR d ALLANT_DE 2 A floor(n/2)
DEBUT_POUR
q PREND_LA_VALEUR n%d
SI (q==0) ALORS
DEBUT_SI
divise PREND_LA_VALEUR 1
x PREND_LA_VALEUR n/d
AFFICHER x
AFFICHER " "
FIN_SI
FIN_POUR
AFFICHER* " "
AFFICHER n
SI (divise == 1) ALORS
DEBUT_SI
AFFICHER* " n'est pas premier"
FIN_SI
SINON
DEBUT_SINON
AFFICHER* " est premier"
FIN_SINON
FIN_ALGORITHME
merci beaucoup, ce programme est excellent et même mieux que ce que demande le prof
encore merci
azerty012
Vous devez être membre accéder à ce service...
Pas encore inscrit ?
1 compte par personne, multi-compte interdit !
Ou identifiez-vous :