Monsieur Excel
Pour tout savoir faire sur Excel !

04 janvier 2009

Ce nombre est-il bien premier ?

Puisque nous en sommes aux premiers jours de l'année, intéressons-nous pour une fois aux nombres premiers !

Les nombres premiers ont toujours fasciné les mathématiciens. De nombreux programmes ont été écrits pour vérifier si un nombre est ou non un nombre premier. C’est en particulier un cas intéressant à traiter pour illustrer la mise en œuvre de programmes récursifs.

Avec Excel, il n’est pas nécessaire d’écrire un programme pour cela. La formule suivante, que j’ai trouvée sur le site de Chip Pearson, à l’adresse www.cpearson.com/, tient en une seule cellule et fait tout le travail.

Cette formule miracle, entrée en B1, et recopiée ensuite dans les colonnes B, E, H et K, est une formule matricielle, donc validée avec [Ctrl]-[Maj]-[Entrée]. La voici :
=SI(OU(A1=1;A1=2;A1=3);"Premier";SI(ET((MOD(A1;LIGNE(INDIRECT("2:"&A1-1)))<>0));"Premier";""))

Le principe de cette formule est qu’un nombre n est premier quand tous les restes des divisions par les nombres de 2 à n-1 sont non nuls.

Remarque – Notons l’utilisation astucieuse des fonctions ligne et indirect, grâce auxquelles la formule matricielle fonctionne car elle s’applique bien à un vecteur.

Selon l’auteur, cette formule fonctionne jusqu’à la valeur 268.435.455, soit 2^28-1. Si quelqu’un parmi nos lecteurs peut nous expliquer pourquoi dans un commentaire, j’aimerais bien le savoir, et j'aimerais aussi savoir si cette limite demeure avec Excel 2007 !

13 Commentaire(s):

  • Pour ma part sur Excel 2007, le dernier nombre valide est 1048577, ce qui correspond au nombre de lignes dans un classeur Excel (1048576) plus une. Pour les nombres plus elevés, la formule renvoie #REF, ce qui est normale puisque le vecteur colonne utilisé dans la formule dépasse les capacités d'Excel. Pour 2003, je m'étonne que la formule fonctionne pour des nombres au delà de 65536.

    By Blogger Jérémie, sur 12:17 AM  

  • J'ai également fait le même constat. En creusant un peu et en allant voir sur le site de Chip Pearson, en téléchargeant son fichier démo, on peut constater qu'il annonce les limites d'Excel 2003 et 2007.
    Je ne comprend donc pas très bien son commentaire sur la valeur de 2^28-1 ??
    Il y a une incohérence entre ce qu'il dit dans son fichier et dans son commentaire. Peut-être est-ce dû à mon anglais ?

    By Anonymous Aigle34, sur 9:31 AM  

  • Milles excuses
    J'ai lu son article jusqu'au bout et il explique clairement comment il arrive à 2^28-1, mais ce n'est bien sûr plus du tout la même formule

    By Anonymous Aigle34, sur 9:37 AM  

  • Bonjour.

    Je n'ai pas analysé la formule indiquée dans l'article de Chip Pearson, peut-être par Fainéantise.

    Par contre un lien sur un article d'une autre formule Excel, pour calculer les nombres premiers.
    http://www.mdf-xlpages.com/modules/smartsection/item.php?itemid=25
    @+Jean-Marie

    By Anonymous Anonyme, sur 11:57 PM  

  • 1 n'est pas un nombre premier mais merci pour la formule.

    PS: elle peut etre allègée en ne vérifiant que les entiers en dessous de la racine du nombre étudié.

    By Anonymous Anonyme, sur 12:02 AM  

  • Bonjour,
    Pour ma part, ça ne marche pas, exemple : Pour 81 ou 21, il m'indique premier....

    By Anonymous Anonyme, sur 11:34 AM  

  • Alors, mailez-moi votre fichier que je puisse vérifier.

    Dans mon fichier, que les abonnées au blog ont reçu, tout marche bien...

    By Blogger Hervé Thiriez, sur 12:23 PM  

  • Cette formule affiche uniquement les nombres impairs, pas les nombres premiers: par exemple elle met "premier" en face de 25 qui n'est pas un nombre premier ...

    By Anonymous Anonyme, sur 11:06 AM  

  • Si vous aviez fait comme je propose de le faire dans l'article, vous n'auriez pas 25 comme nombre premier, pas plus que je ne l'ai dans la copie d'écran !

    By Blogger Hervé Thiriez, sur 2:01 PM  

  • C'est normal, c'est parce que tu as mis tes nombres en 1 colonne.
    il faut faire comme l'exemple, ne pas dépasser 10 lignes et étaler sur plusieurs colonnes

    By Anonymous Anonyme, sur 3:24 PM  

  • Bonjour,
    Y a-t-il quelqu'un pour m'aider? J'utilise Excell 2010. J'ai essayé la formule mais dès la première liste de 1 à 10, j'ai 9 comme nombre premier!!! Ce n'est pas très commode n'est-ce pas?

    By Anonymous Anonyme, sur 12:30 PM  

  • Je reviens sur ce que j'ai dit à 12:30PM.
    Il faut valider la saisie par [Ctrl]-[Maj]-[Entrée]et non par un simple entrée.
    Mille excuses Professeur!!

    By Anonymous Anonyme, sur 5:14 PM  

  • pour moi la limite est : 65 537 avec Excel 2002

    By Blogger Laurent Caron, sur 10:49 AM  

Enregistrer un commentaire

<< Accueil