Beefy Boxes and Bandwidth Generously Provided by pair Networks
Perl: the Markov chain saw

Re: Prime Number Finder

by elusion (Curate)
on Feb 07, 2002 at 22:32 UTC ( #143983=note: print w/replies, xml ) Need Help??

in reply to Prime Number Finder

Here's the code I've used for this in the past. I believe it's fairly efficent. If you're going to use it like in the root node in this thread, it's best to check only odd numbers, as suggested by ichimunki.
#!usr/bin/perl -w use strict; sub prime { my $number = shift; my $d = 2; my $sqrt = sqrt $number; while(1) { if ($number%$d == 0) { return 0; } if ($d < $sqrt) { $d++; } else { return 1; } } } my $number = $ARGV[0]; print prime($number);

elusion :

Replies are listed 'Best First'.
Re: Re: Prime Number Finder
by Anonymous Monk on May 04, 2002 at 18:08 UTC
    Isn't the math wrong here? I get false primes with this.
      nope! they all look prime to me!
      i like it, i'm gonna use it to explain programming loops to a mathmatician friend. i took the liberty to re-arrange a touch...
      sub isPrime { my $number = shift; my $sqrt = sqrt $number; my $d = 2; while (1) { return 0 if ( $number % $d == 0 ); return 1 if ( $d > $sqrt ); $d++; } }
      In fact, you're right, because numbers which only can be devided in 1, themselves and their square root will be marked as prime in this way. make the < into a <= and it is solved.

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://143983]
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others romping around the Monastery: (6)
As of 2021-05-13 16:54 GMT
Find Nodes?
    Voting Booth?
    Perl 7 will be out ...

    Results (137 votes). Check out past polls.