# Regexp and Prime numbers

**URL:** <https://www.ruby-forum.com/t/regexp-and-prime-numbers/89352>\
**Category:** Ruby\
**Created:** [March 19, 2007, 8:08pm UTC](https://www.ruby-forum.com/t/regexp-and-prime-numbers/89352 "2007-03-19T20:08:30Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![timperrett](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/t/c5a1d2/32.png) [@timperrett](https://www.ruby-forum.com/u/timperrett)\
**Post date:** [March 19, 2007, 8:08pm UTC](https://www.ruby-forum.com/t/regexp-and-prime-numbers/89352/1 "2007-03-19T20:08:30Z")

</div>

This is a one-liner Ruby script that will tell you if a given number is  
prime.

ruby -wle ‘puts “Prime” unless (“1” \* ARGV[0].to\_i) =~  
/^1$|^(11+?)\1+$/’ [number]

I cannot take credit for this one – it originally came from Perl. The  
website listed below gives the full explanation of how the regexp  
works.

[http://montreal.pm.org/tech/neil\_kandalgaonkar.shtml](http://montreal.pm.org/tech/neil_kandalgaonkar.shtml)

I highly recommend reading this if you want to flex your regexp muscles  
today.

Blessings,  
TwP

ruby -wle ‘puts “Prime” unless (“1” \* ARGV[0].to\_i) =~  
/^1$|^(11+?)\1+$/’ 42

It may be the answer to life, the universe, and everything, but it  
certainly isn’t prime!

---

<div class="post-metadata">

**Author:** ![timperrett](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/t/c5a1d2/32.png) [@timperrett](https://www.ruby-forum.com/u/timperrett)\
**Post date:** [March 26, 2007, 7:46pm UTC](https://www.ruby-forum.com/t/regexp-and-prime-numbers/89352/2 "2007-03-26T19:46:10Z")

</div>

On Mar 19, 2007, at 2:07 PM, Tim P. wrote:

> [http://montreal.pm.org/tech/neil\_kandalgaonkar.shtml](http://montreal.pm.org/tech/neil_kandalgaonkar.shtml)
> 
> I highly recommend reading this if you want to flex your regexp  
> muscles today.

Wow, that was just awesome.

James Edward G. II

---

<div class="post-metadata">

**Author:** ![timperrett](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/t/c5a1d2/32.png) [@timperrett](https://www.ruby-forum.com/u/timperrett)\
**Post date:** [April 24, 2007, 9:49pm UTC](https://www.ruby-forum.com/t/regexp-and-prime-numbers/89352/3 "2007-04-24T21:49:56Z")

</div>

Cool! I couldn’t resist porting it to Java, so here is my Java version  
(It is not one-liner, but maybe one statement?) :

public class PrimeTester {  
public static void main(String[] args) {  
System.out.println(String.format(“%0” + args[0] + “d”,  
0).matches(“^0$|^(00+?)\1+$”) ? “Not prime” : “Prime”);  
}  
}

[http://davidtran.doublegifts.com/blog/?p=12](http://davidtran.doublegifts.com/blog/?p=12)

---

<div class="post-metadata">

**Author:** ![timperrett](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/t/c5a1d2/32.png) [@timperrett](https://www.ruby-forum.com/u/timperrett)\
**Post date:** [September 25, 2007, 11:06pm UTC](https://www.ruby-forum.com/t/regexp-and-prime-numbers/89352/4 "2007-09-25T23:06:16Z")

</div>

On 3/20/07, Tim P. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> > It highlites some of the performance issues of backtracking in ruby1.8  
> > sys 0m0.024s  
> > But… on larger numbers…
> 
> Now that is very interesting. Do you know if Ruby 1.9 is running  
> Onigurma \<sp?\>, the new regexp handler?

For those of us on Windows command line:

ruby -wle “puts ‘Prime’ unless (‘1’ \* ARGV[0].to\_i) =~  
/^1$|^(11+?)\1+$/”

That’s cool.

Jason

---

<div class="post-metadata">

**Author:** ![timperrett](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/t/c5a1d2/32.png) [@timperrett](https://www.ruby-forum.com/u/timperrett)\
**Post date:** [September 25, 2007, 11:09pm UTC](https://www.ruby-forum.com/t/regexp-and-prime-numbers/89352/5 "2007-09-25T23:09:22Z")

</div>

On 3/20/07, gga [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> > perl -wle ‘print “Prime” if (1 x shift) !~ /^1$|^(11+?)\1+$/’ 104729  
> > Segmentation fault
> 
> > perl -v  
> > This is perl, v5.8.8 built for x86\_64-linux-gnu-thread-multi

Now that is very interesting. Do you know if Ruby 1.9 is running  
Onigurma \<sp?\>, the new regexp handler?
