Nombre premier en pascal

Résolu/Fermé
Bonjour,

comment Vérifier si un nombre entier est un nombre premier, en pascal.

un programme s.v.p.

merci bcp d'avance.
Configuration: Windows XP
Internet Explorer 6.0

10 réponses

  • Votes
  • Date
  • Date décroissante
  1. salut, pour verifier si le nombre n est premier ou pas le principe est de tester tous les nombres inferieur à n qu'on, si le reste de la division de n/i est 0 donc i est un diviseur on compte les diviseurs avec la variable r,a la fin si le programme trouve plus de 2 diviseurs cela veut dire que n admet un diviseur a part 0 et lui même =>n n'est pas premier si non le nombre est premier.

    program premier;
    uses wincrt;
    var n,r,i:integer;
    begin
    write('Donnez un entier naturel : ');
    read(n);
    r:=0;
    for i:=1 to n do
    if n mod i = 0 then r:=r+1;

    if r=2 then write('le nombre est premier') else
    write('le nombre n'est pas premier');
    end.

    Rq: cette algorithme peut s'améliorer pour gagner du temps
    1. merci fahim, ton programme court et util.
    2. j'ai pas compris tu peux me traduire ce algorithme en francais et avec la structure répétitive repeter jusqu'a
      merci d'avance
    3. Modérateur
      Les deux boucles suivantes sont équivalentes en Pascal :

      for i:=a to b do
      begin
          // instructions
      end;

      i:=a;
      while i<=b do
      begin
          // instructions
          i:=i+1; 
      end;

      Or une structure répetitive "répéter jusqu'à" correspond à une boucle while (traduire "tant que")
      Remarque : l'algorithme de fahim0788 fonctionne, mais il peut être amélioré.
    4. fahim juste tu as une faute en affichage pour ce msg ki sera comme ça :

      write('le nombre n''est pas premier');
    5. désolé votre algorithme est completement faux
      si (n =7) on aura mod n/i si le compteur de i est 7 alors 7/7 =1 le reste c 0 et pourton 7 est un nombre premier mais d'aprés votre algorime le résultat est contraire