Nbr premier

hajar512 -  
 buzus -
slt à tous

svp jai pas trouvé la solution de cet algo:

saisir un nombre et savoir s'il est un nombre premier ou non

merci

5 réponses

  1. dna.factory Messages postés 19917 Date d'inscription   Statut Modérateur Dernière intervention   1 621
     
    bah, c'est facile, il me semble
    (mes souvenirs d'algo étant un peu vieux, je te le fais en francais)

    tu fais une boucle de 2 à x ou x est ton nombre
    tu fais un modulo de ton nombre par x, si le résultat est 0, tu met une variable de sortie à 1 (ou tu break, mais c'est mal de break)
    tant que la variable de sortie est à 0 et que x est inférieur à ton nombre, tu boucle

    le modulo, c'est l'opération qui donne le reste de la division euclidienne, si tu sais pas le faire, tu jongle avec division reele et division entiere (euclidienne)
    1
  2. buzus
     
    Bonjour,

    pour voir si le nombre "B" est premier, il faut créer une variable entière "A" que tu initialise à 2.

    tu utilises une fonction modulo ou reste division euclidienne. (reste division euclidienne = modulo de B par A)

    Si le résultat est égale à zéro c'est que ton nombre n'est pas premier.
    Si le résultat est différent de zéro c'est que ton nombre n'est pas divisible par A.

    Incrémente A tant qu'il soit inférieur ou égale à B/2

    Si A supérieur à B/2 alors ton nombre est premier.

    A+
    1
  3. dna.factory Messages postés 19917 Date d'inscription   Statut Modérateur Dernière intervention   1 621
     
    effectivement, j'allais ou bout, mais y'avais pas besoin...

    une solution sans le modulo.. je comprends l'intéret pédagogique, mais cela reviendra toujours à la même chose
    autant demander tout de suite l'algo du modulo, ça revient au même
    1
  4. hajar512
     
    non je savais deja la solution du modulo je veux autre solution merci
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. buzus
     
    Si tu veux pas utiliser le modulo tu peux créer ta fonction modulo.

    Soit A ton nombre en entrer de fonction et B ton index que tu incrémentes et initialiser à 2.
    r=réel
    i=integer

    Pour cela : tu divises rA par rB

    tu obtiens rC

    tu convertie rC en entier que tu écris dans iD

    tu fais iD x iB = iE

    ensuite tu fais : iA - iE = iR (reste de ta division euclidienne)

    dans tout ca il te faut jongler entre réel et integer.

    A+
    0