Skip to content

Contrôler si un nombre est premier avec une Regexp

Voici une expression régulière de la mort qui tue !!!

/^1?$|^(11 ?)\1 $/

A quoi sert-elle, me direz vous ? C’est dans le titre de la news : bien utilisée, elle permet de savoir si un nombre est premier ou non !

Quand je dis bien utilisée, c’est qu’il y a juste un petit travail à faire : convertir le nombre en une suite de 1, par exemple : 7 => 1111111.

En ruby, ça donne:

~$ irb
irb(main):001:0> def is_prime(n)
irb(main):002:1> ("1" * n) !~ /^1?$|^(11+?)\1+$/
irb(main):003:1> end
=> nil
irb(main):004:0> is_prime(10)
=> false
irb(main):005:0> is_prime(11)
=> true
irb(main):006:0> is_prime(12)
=> false
irb(main):007:0> is_prime(13)
=> true
irb(main):008:0> is_prime(99)
=> false
irb(main):009:0> is_prime(100)
=> false
irb(main):010:0> is_prime(101)
=> true

La magie de l’algorithmique …

[ Avinash Meetoo: A regular expression to check for prime numbers ]

Published inAstucesProgrammation
Loading Facebook Comments ...

Be First to Comment

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée.