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 ]
Be First to Comment