[ create a new paste ] login | about

Link: http://codepad.org/SzTEWYQR    [ raw code | output | fork ]

Perl, pasted on Feb 5:
use strict;
use warnings;

my $num = shift || 600851475143;
my @primes = ( 0..int(sqrt($num)) ) ;

# sieve: get primes under the number
for ( @primes ){
	unless ( $_ == 1 or $_ == 0 ){
		my $b = 2 * $_ ;
		while ( $b <= $#primes ) {
			$primes[$b] = 0 ;
			$b += $_ ;
		}
	}
}

# get factors of the number
@primes = sort{$a<=>$b} grep{$_>1} grep{$num%$_==0} grep{$_>0} @primes ;

# output factors
map {print "$_ " }@primes ;
print "\n" ;

# output max factor
print pop @primes ;
print "\n" ;


Output:
1
2
71 839 1471 6857 
6857


Create a new paste based on this one


Comments: