Path: csiph.com!pasdenom.info!usenet-fr.net!.POSTED!not-for-mail From: Olivier Miakinen Newsgroups: fr.comp.lang.regexp Subject: Trouver les nombres premiers avec une regexp Date: Thu, 31 Oct 2024 13:58:52 +0100 Organization: There's no cabale Lines: 23 Message-ID: NNTP-Posting-Host: 200.89.28.93.rev.sfr.net Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-15 Content-Transfer-Encoding: 8bit X-Trace: cabale.usenet-fr.net 1730379532 44524 93.28.89.200 (31 Oct 2024 12:58:52 GMT) X-Complaints-To: abuse@usenet-fr.net NNTP-Posting-Date: Thu, 31 Oct 2024 12:58:52 +0000 (UTC) User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Firefox/52.0 SeaMonkey/2.49.4 X-Mozilla-News-Host: news://news.galacsys.net:119 Xref: csiph.com fr.comp.lang.regexp:231 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? 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