Votre IP: 38.107.179.244 
  
 
Google
 
Accueil e-mail Linux
Linux
Perl
Perl
C
Langage C
Dico
Dictionnaire
Biblio liens
Bibliothèque de liens
Index articles
Index articles
 

Date création : 26-10-2007 00:00:00
Date de la dernière modification : 07-01-2008 22:13:53
C  Vous êtes dans : Langage C Astuces / Exercices

VERIFIER SI UN NOMBRE ENTIER EST PREMIER



Définition nombre premier


Un nombre premier est un entier naturel, qui se divide seulement par 1 et lui-même.

Algorithme 1 : les diviseurs compris entre 2 et N-1 seront testés

  • les diviseurs compris entre 2 et N-1 seront testés

/**************************\
* nombre_premier1.c *
\**************************/

/* algorithme : teste tous les diviseur */
#include <stdio.h>


int main (void)
{
    int i, nb, compter, test;
    test = compter = 0;
    printf ("Entrez un nombre entier : ");
    if (scanf ("%d", &nb) != 1)
        return -1;

    for (i = 2; i < nb; i++, compter++)
        if (nb % i == 0)
            test = 1;
    if (!test)
        printf ("%d nombre premier, nombre iterations = %d\n", nb, compter);
    else
    f    printf ("%d n'est pas nombre premier, nombre iterations = %d\n", nb,compter);
    return 0;
}


Algorithme 2 : les diviseurs pairs ne seront pas testés, la recherche se limitant aux diviseurs impairs

  • les diviseurs pairs ne seront pas testés, la recherche se limitant aux diviseurs impairs

/**************************\
* nombre_premier2.c *
\**************************/

/* algorithme : exclure les nombres paires et
* teste tous les diviseurs */
#include <stdio.h>


int main (void)
{
    int i, nb, compter, test;
    test = compter = 0;
    printf ("Entrez un nombre entier : ");
    if (scanf ("%d", &nb) != 1)
        return -1;

    if (nb % 2 == 0)
        test = 1;
    else{
        for (i = 3 ; i < nb; i+=2, compter++)
            if (nb % i == 0)
                test = 1;
    }
    if (!test)
        printf ("%d nombre premier, nombre iterations = %d\n",
                      nb, compter);
    else
        printf ("%d n'est pas nombre premier, nombre iterations = %d\n",nb, compter);
    return 0;
}

Algorithme 3 : les diviseurs impairs jusqu'à la racine carrée du N seront testés

  • les diviseurs impairs jusqu'à la racine carée du N seront testés

/**************************\
* nombre_premier3.c *
\**************************/

/* algorithme : exclure les nombres paires et
* teste tous les diviseurs jusqu'à la racine carree */
#include <stdio.h>
#include <math.h>

int main (void)
{
    int i, nb, compter, test,limite;
    test = compter = 0;
    printf ("Entrez un nombre entier : ");
    if (scanf ("%d", &nb) != 1)
        return -1;
    limite = sqrt(nb) + 1;

    if (nb % 2 == 0)
        test = 1;
    else{
        for (i = 3 ; i < limite; i+=2, compter++)
            if (nb % i == 0)
                test = 1;
    }
    if (!test)
        printf ("%d nombre premier, nombre iterations = %d\n", nb, compter);
    else
        printf ("%d n'est pas nombre premier, nombre iterations = %d\n",nb, compter);
    return 0;
}

Algorithme4 : arrêt du programme quand un diviseur est trouvé

  • arrêt du programme quand un diviseur est trouvé

/**************************\
* nombre_premier4.c *
\**************************/

/* algorithme : exclure les nombres paires et
* teste tous les diviseurs jusqu'a la racine caree
* et sortie de la boucle au 1er diviseur trouvé */
#include <stdio.h>
#include <math.h>

int main (void)
{
    int i, nb, compter, test,limite;
    test = compter = 0;
    printf ("Entrez un nombre entier : ");
    if (scanf ("%d", &nb) != 1)
        return -1;
    limite = sqrt(nb) + 1;

    if (nb % 2 == 0)
        test = 1;
    else{
        for (i = 3 ; i < limite && ! test; i+=2, compter++)
            if (nb % i == 0)
                test = 1;
    }
    if (!test)
        printf ("%d nombre premier, nombre iterations = %d\n", nb, compter);
    else
        printf ("%d n'est pas nombre premier, nombre iterations = %d\n", nb, compter);
    return 0;
}

Création : octobre 2007  © Tous droits réservés 2007 linux-perl-c
Valid HTML 4.01 TransitionalValid CSS