I was writing a program to solve the #3 exercise on project Euler. I needed to 
find the prime factors of a given number.
I have solved it already but a couple of the ways I tried to solve the problem 
caused a problem.

The below worked for smaller numbers but when I used the 12 digit number given 
by project Euler I got "Out of memory!"

chomp( my $factor = <>);
my @primefactor = grep { &isprime( $_ ) } ( grep { $factor % $_ == 0 } 
1..$factor );
sub isprime { 
my $numb = shift;
my @quot = grep { 
    if ( $numb % $_ == 0 ) {1;
    } else { 0;} 
} 2..$numb-1;
unless ( @quot ) {
    1;
    #    say "prime";
    } else {
    0;
    #    say "not prime";
    }
}


This one worked but caused my computer to crash.
my $xxx = 1;
while ( $xxx < $factor ) {
    if ( $factor % $xxx == 0 and &isprime($xxx) ) {
        say $xxx;
    }
    $xxx++
}
what is causing perl to do this?  Would using a module save memory?Thanks for 
any help.

Reply via email to