Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > fr.comp.lang.regexp > #231 > unrolled thread

Trouver les nombres premiers avec une regexp

Started byOlivier Miakinen <om+news@miakinen.net>
First post2024-10-31 13:58 +0100
Last post2024-12-01 10:30 +0100
Articles 2 — 1 participant

Back to article view | Back to fr.comp.lang.regexp


Contents

  Trouver les nombres premiers avec une regexp Olivier Miakinen <om+news@miakinen.net> - 2024-10-31 13:58 +0100
    Re: Trouver les nombres premiers avec une regexp Olivier Miakinen <om+news@miakinen.net> - 2024-12-01 10:30 +0100

#231 — Trouver les nombres premiers avec une regexp

FromOlivier Miakinen <om+news@miakinen.net>
Date2024-10-31 13:58 +0100
SubjectTrouver les nombres premiers avec une regexp
Message-ID<vfvuuc$1bfc$1@cabale.usenet-fr.net>
Bonjour,

Matt Parker vient de sortir une vidéo (en anglais) où il décortique une regexp
qui permet de tester si une chaîne composée de n caractères identiques a comme
longueur (n donc) un nombre premier :

How on Earth does ^.?$|^(..+?)\1+$ produce primes?
<https://www.youtube.com/watch?v=5vbk0TwkokM>


En réalité, cette regexp ^.?$|^(..+?)\1+$ retourne vrai si la longueur n'est
/pas/ un nombre premier. Et du coup le code python que Matt utilise est :

import re
n = (le nombre à tester)
print(not re.match(r'^.?$|^(..+?)\1+$', '1'*n))


Et forcément je pose la question : quelle serait la regexp pour tester
directement si la longueur de cette chaîne de 1 *est* un nombre premier ?

-- 
Olivier Miakinen

[toc] | [next] | [standalone]


#232

FromOlivier Miakinen <om+news@miakinen.net>
Date2024-12-01 10:30 +0100
Message-ID<vihabe$1csm$1@cabale.usenet-fr.net>
In reply to#231
Le 31/10/2024 13:58, j'écrivais :
> 
> Matt Parker vient de sortir une vidéo (en anglais) où il décortique une regexp
> qui permet de tester si une chaîne composée de n caractères identiques a comme
> longueur (n donc) un nombre premier :
> 
> How on Earth does ^.?$|^(..+?)\1+$ produce primes?
> <https://www.youtube.com/watch?v=5vbk0TwkokM>
> 
> 
> En réalité, cette regexp ^.?$|^(..+?)\1+$ retourne vrai si la longueur n'est
> /pas/ un nombre premier. Et du coup le code python que Matt utilise est :
> 
> import re
> n = (le nombre à tester)
> print(not re.match(r'^.?$|^(..+?)\1+$', '1'*n))
> 
> 
> Et forcément je pose la question : quelle serait la regexp pour tester
> directement si la longueur de cette chaîne de 1 *est* un nombre premier ?

Une réponse évidente : utiliser une assertion négative englobant celle-ci.


-- 
Olivier Miakinen

[toc] | [prev] | [standalone]


Back to top | Article view | fr.comp.lang.regexp


csiph-web