fork(1) download
  1. #!/usr/bin/perl
  2. use strict;
  3. use warnings;
  4.  
  5. my $magic = 7393913335919140050521110339491123405991919445111971;
  6.  
  7. sub largestprimef($);
  8. sub max($$);
  9.  
  10. print largestprimef($magic);
  11.  
  12. sub largestprimef($) {
  13. my $n = shift;
  14.  
  15. my $i;
  16. return largestprimef(max(2, $n/2)) if($n % 2 == 0);
  17. my $sn = int( sqrt($n) );
  18.  
  19. for ( $i = 3 ; $i <= $sn ; $i += 2 ) {
  20. if ( $n % $i == 0 ) { last; }
  21. }
  22. if ( $i > $sn ) #loop ran over, means the number is prime
  23. {
  24. return $n;
  25. }
  26. else {
  27. return max( $i, largestprimef( $n / $i ) );
  28. }
  29. }
  30.  
  31. sub max($$) {
  32. return ( sort { $a <=> $b } (@_) )[1];
  33. }
Success #stdin #stdout #stderr 0.82s 6128KB
stdin
Standard input is empty
stdout
22704335299507
stderr
Deep recursion on subroutine "main::largestprimef" at prog.pl line 16.