Inscription / Connexion Nouveau Sujet
Niveau terminale
Partager :

Algo

Posté par
popo1
09-11-17 à 19:07

Bonjour dénierrement je me suis remis aux algorithmes et jene sais pas trop comment ecrire un algorithme permettant d'afficher les nombres premiers de 1 à n (n etant un entier).
j'ai essayer çamais ça marche  merci d'avance
Code de l'algo

Algo

Posté par
Glapion Moderateur
re : Algo 09-11-17 à 19:28

Bonsoir,
tu n'utilises pas ta variable b
il faut t'en servir comme une bascule, l'initialiser à 0 au début le la boucle en i et si on rencontre un diviseur on la bascule à 1. on la teste en sortie, si elle est resté à 0 c'est qu'on a trouvé aucun diviseur et le nombre est premier, donc on l'affiche.

De plus dans les boucle mettre des entiers donc floor(sqrt(i)) et pas sqrt(i)
Voici le programme corrigé :


VARIABLES
i EST_DU_TYPE NOMBRE
b EST_DU_TYPE NOMBRE
c EST_DU_TYPE NOMBRE
DEBUT_ALGORITHME
	POUR i ALLANT_DE 1 A 100
		DEBUT_POUR
		b PREND_LA_VALEUR 0
		POUR c ALLANT_DE 1 A floor(sqrt(i))
			DEBUT_POUR
			SI  (i%c == 0) ALORS
				DEBUT_SI
				b PREND_LA_VALEUR 1
				FIN_SI
			FIN_POUR
			SI (b == 0) ALORS
				DEBUT_SI
				AFFICHER* i
				FIN_SI
		FIN_POUR
FIN_ALGORITHME


(tu peux le copier/coller dans algobox en mode éditeur de texte, ou bien directement en ligne dans proglab )

Posté par
mathafou Moderateur
re : Algo 09-11-17 à 19:31

Bonjour,

mais ça marche ???

tu veux dire mais ça ne marche pas

il sert à quoi ton "b" ?

dans la boucle "pour c" tu prétend que i est premier du moment qu'il existe un c qui ne divise pas i
et tu le répètes (de prétendre que i est premier) à chaque c qui ne divise pas i !
alors que le vrai critère est que aucun c ne divise i, (autre que 1 et i : il serait bon de commencer la boucle à c = 2 !!)
ce que l'on ne peut savoir que une fois la boucle sur c entièrement terminée.


e- pas

parv exempel

Posté par
mathafou Moderateur
re : Algo 09-11-17 à 19:34

ignorer les débris à la fin du message

de plus Glapion (salut) t'a même donné une correction.

Posté par
popo1
re : Algo 09-11-17 à 19:50

Glapion
je comprends loù tu vas mais je saisis ton algo et ça marche pas (ça ne maffiche rien).

Algo

Posté par
Glapion Moderateur
re : Algo 09-11-17 à 19:59

oui fais partir c à 2


VARIABLES
i EST_DU_TYPE NOMBRE
b EST_DU_TYPE NOMBRE
c EST_DU_TYPE NOMBRE
DEBUT_ALGORITHME
	POUR i ALLANT_DE 1 A 100
		DEBUT_POUR
		b PREND_LA_VALEUR 0
		POUR c ALLANT_DE 2 A floor(sqrt(i))
			DEBUT_POUR
			SI  (i%c == 0) ALORS
				DEBUT_SI
				b PREND_LA_VALEUR 1
				FIN_SI
			FIN_POUR
			SI (b == 0) ALORS
				DEBUT_SI
				AFFICHER* i
				FIN_SI
		FIN_POUR
FIN_ALGORITHME

Posté par
popo1
re : Algo 09-11-17 à 20:09

merci bcp

Posté par
mathafou Moderateur
re : Algo 09-11-17 à 20:13

c'est ce que j'avais dit

Citation :
il serait bon de commencer la boucle à c = 2

mais c'est vrai que c'est moins fatiguant de recopier...



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 !