Hacker News new | past | comments | ask | show | jobs | submit login
Regex to check for prime numbers (noulakaz.net)
45 points by kirubakaran on July 16, 2009 | hide | past | favorite | 9 comments



This is clever and impressive.

For what it's worth, though, it is possible because most scripting languages make regular expressions more powerful by allowing you to match against previously captured values. As formally defined, regular expressions are not powerful enough to check whether an arbitrary number is prime.


I was thinking the same thing. IIRC, the language of prime numbers isn't context-free, either.

Though to be fair, since the universe is finite, no existing computer is powerful enough to check if an arbitrarily large number is prime.



Brute force but works. The real trick, for me at least, was to convert the number into a sequence of 1's. The rest was like an exercise in programming Turing machines (and a nice flashback into the freshman year of college).


A unary non-prime is empty, or 1, or composed of a series of at least two repetitions of at least two 1s.

Cute.


This has been mentioned here before:

http://news.ycombinator.com/item?id=230292

If your browser has Java applet support, here you can watch the regex succeed (demonstrating a number is composite) or fail (prime):

49: http://regex.powertoy.org/?pat=/^1%3F%24|^%2811+%3F%29\1+%24...

47: http://regex.powertoy.org/?pat=/^1%3F%24|^%2811+%3F%29\1+%24...


Yeah, it's a pretty old trick. I recall someone showing it off on #perl in about 1997.


Search for "Prime" on this insanely fun page, to see where it came from:

http://www.cpan.org/misc/japh

(Hmm... I'll use that as a fortune file. Just need to remove extra '%', if fortune barfs on them. Ah, haven't had fortune in my login since the 90s.)


Abigail! Bingo, that's who I recall posting it.




Join us for AI Startup School this June 16-17 in San Francisco!

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: