Inscription / Connexion Nouveau Sujet
Niveau terminale
Partager :

Test nombre premier sous Algobox

Posté par
pppa
16-02-18 à 17:29

Bonjour

pouvez-vous m'aider à terminer cet algorithme svp ; je ne comprends pas mon erreur

Pour tester si N est premier j'ai écrit sous Algobox

VARIABLES
  N EST_DU_TYPE NOMBRE
  D EST_DU_TYPE NOMBRE
  T EST_DU_TYPE NOMBRE
DEBUT_ALGORITHME
  LIRE N
  POUR D ALLANT_DE 2 A N-1
    DEBUT_POUR
    SI ((N%D)!=0) ALORS
      DEBUT_SI
      T PREND_LA_VALEUR 0
      FIN_SI
     SINON
     DEBUT_SINON
     T PREND_LA_VALEUR 1
     FIN_SINON
    FIN_POUR
  AFFICHER T
FIN_ALGORITHME

Invariablement la réponse est : 0

C'est-à-dire que tous les nombres que je teste seraient premiers !

Merci de me dire ce qu'il faut corriger

Posté par
mathafou Moderateur
re : Test nombre premier sous Algobox 16-02-18 à 17:44

Bonjour,

la dernière valeur que prend T est lorsqu'on teste la division de N par N-1
toutes les valeurs précédentes (les éventuels 1) sont écrasées.
donc à la fin T est toujours 0

déplacer "T PREND_LA_VALEUR 0"

Posté par
Glapion Moderateur
re : Test nombre premier sous Algobox 16-02-18 à 18:04

Bonjour, c'est parce que T prend toujours la valeur du dernier test c.a.d de N-1 qui ne divise jamais N
Et puis il faut arrêter de tester dès que T a basculé.


VARIABLES
	N EST_DU_TYPE NOMBRE
	D EST_DU_TYPE NOMBRE
	T EST_DU_TYPE NOMBRE
DEBUT_ALGORITHME
	LIRE N
	T PREND_LA_VALEUR 0
	POUR D ALLANT_DE 2 A N-1
		DEBUT_POUR
		SI (N%D == 0 ET T==0) ALORS
			DEBUT_SI
			T PREND_LA_VALEUR 1
			FIN_SI
		FIN_POUR
	SI (T==1) ALORS
		DEBUT_SI
		AFFICHER "Ce nombre n'est pas premier"
		FIN_SI
		SINON
			DEBUT_SINON
			AFFICHER "Ce nombre est premier"
			FIN_SINON
FIN_ALGORITHME


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

Posté par
pppa
re : Test nombre premier sous Algobox 16-02-18 à 18:14

Un grand merci à vous deux

Citation :
lorsqu'on teste la division de N par N-1
toutes les valeurs précédentes (les éventuels 1) sont écrasées

Je l'ignorais, je pensais que tous les tests étaient stockés.

Mon remerciement - Mathafou ne m'en voudra pas j'espère - va un peu plus particulièrement à Glapion qui m'a fourni là un modèle d'algorithme élaboré qui me servira encore dans le futur (proche et plus lointain), et que j'aurais eu du mal à concevoir de moi-même cette fois-ci.

Je ne connaissais pas Proglab, merci aussi pour l'information

Posté par
mathafou Moderateur
re : Test nombre premier sous Algobox 16-02-18 à 18:27

cet algorithme n'arrête pas de tester quand D divise N ("quand T a basculé")
juste qu'il ne tient plus compte du test
la boucle pour est exécute systématiquement N-2 fois quoi qu'il arrive, pour D de 2 à N-1 inclus = N-2 valeurs
une telle complication de tester T est donc un peu inutile ...

si on veut le faire (arrêter dès que ça divise) , pour arrêter prématurément une boucle :

- soit on utilise une boucle "tant que" au lieu d'une boucle "pour"
tant que (D < N et T ==0)
il faut alors coder explicitement l'initialisation de D et sa progression de 1

- soit on "triche" en modifiant la valeur de D artificiellement à une valeur > N-1
(méthode pas vraiment recommandée d'utiliser des astuces de programmation basées sur des "effets de bord")

Posté par
mathafou Moderateur
re : Test nombre premier sous Algobox 16-02-18 à 18:34

Citation :
je pensais que tous les tests étaient stockés
principe immuable de tous les algorithmes quels qu'ils soient :

- les seuls trucs qui sont stockés le sont explicitement dans des valeurs de variables et nulle part ailleurs (on ne stocke pas des "tests")
- une variable est une "boite" dans laquelle on met successivement les valeurs, chaque nouvelle valeur détruisant définitivement la précédente.

Posté par
pppa
re : Test nombre premier sous Algobox 16-02-18 à 18:35

C'est vrai que pour tester un nombre supérieur à  cinq cent mille et quelques  il y a dépassement de capacité.
Je m'inspirerai des remarques de Mathafou pour aménager l'algorithme si besoin de test sur des "grands" nombres.

Merci

Posté par
pppa
re : Test nombre premier sous Algobox 16-02-18 à 18:47

>> Mathafou : si je te comprends bien (en oubliant la méthode non recommandée), ton conseil permet de tester des nombres (impairs) beaucoup plus 'grands'  que cinq cent mille et quelques, sous réserve que le nombre ne soit pas premier ; s'il est premier, le programme va tout de même bugger, ou bien ?

Posté par
carpediem
re : Test nombre premier sous Algobox 16-02-18 à 18:56

salut

dans sa philosophie ce programme est bourrin et peu réfléchi ...

ne pas être premier c'est posséder (au moins) un diviseur distinct de l'unité est lui-même ...

il me semble que la philosophie : tant que n n'a pas de diviseur il est premier est bien plus efficace ...

Posté par
mathafou Moderateur
re : Test nombre premier sous Algobox 16-02-18 à 19:10

Pour des grands nombres toute méthode basée sur un balayage des valeurs successives et test si elles divisent ou pas N est "bourrin" et inutilisable.
on doit alors utiliser des critères beaucoup plus évolués largement hors programme de Lycée.

La méthode bourrin la moins bourrin est avec une boucle tant que et en s'arrêtant à \red \sqrt{N}
voire même en ne testant que 2 et les nombres impairs \le \sqrt{N}



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 1675 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 !