Inscription / Connexion Nouveau Sujet
Niveau seconde
Partager :

algorithme nombres premiers

Posté par
azerty012
17-05-12 à 16:11

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

Posté par
azerty012
re : algorithme nombres premiers 17-05-12 à 17:45

petit up

Posté par
patrice rabiller
re : algorithme nombres premiers 17-05-12 à 18:29

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

Posté par
sloreviv
re : algorithme nombres premiers 17-05-12 à 18:37

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)

algorithme nombres premiers

Posté par
azerty012
re : algorithme nombres premiers 17-05-12 à 23:19

@ 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é

Posté par
Glapion Moderateur
re : algorithme nombres premiers 17-05-12 à 23:26

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

Posté par
azerty012
re : algorithme nombres premiers 17-05-12 à 23:41

merci beaucoup, ce programme est excellent et même mieux que ce que demande le prof

encore merci
azerty012

Posté par
younes963
re : algorithme nombres premiers 30-12-17 à 12:08

Thanks a lot body
this program is comfortable
thankss a lot



Vous devez être membre accéder à ce service...

Pas encore inscrit ?

1 compte par personne, multi-compte interdit !

Ou identifiez-vous :


Rester sur la page

Inscription gratuite

Fiches en rapport

parmi 1674 fiches de maths

Désolé, votre version d'Internet Explorer est plus que périmée ! Merci de le mettre à jour ou de télécharger Firefox ou Google Chrome pour utiliser le site. Votre ordinateur vous remerciera !