Advertisement
snakerdlk

Desafio Geek - Perl v1

Aug 25th, 2011
160
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Perl 0.73 KB | None | 0 0
  1. #!/usr/bin/perl
  2.  
  3. use strict;
  4. use warnings;
  5.  
  6. use POSIX;
  7.  
  8. my $regexp = '(\d)(\d)(\d)(\d)(\3)(\2)(\1)';
  9. my $sqrt = 0;
  10. my $palindrome;
  11. my $counter;
  12.  
  13. if(defined($ARGV[0])){
  14.     $regexp = "";
  15.     for($counter = 0; $counter < $ARGV[0];$counter++){
  16.         if($counter > ceil($ARGV[0]/2)-1){
  17.             $regexp .= "(\\".($ARGV[0]-$counter).")";
  18.         }else{
  19.             $regexp .= "(\\d)";
  20.         }
  21.     }
  22. }
  23.          
  24.  
  25.  
  26.  
  27. while(read){
  28.     while ($_ =~ /$regexp/g) {
  29.         $palindrome = $&;;
  30.  
  31.         #print $palindrome."\n";       
  32.    
  33.         if($palindrome % 2 == 0){
  34.             next;
  35.         }
  36.  
  37.         $sqrt = sqrt($palindrome);
  38.         for($counter = 3; $counter <= $sqrt; $counter+=2){
  39.             if($palindrome % $counter == 0){
  40.                 last;
  41.             }
  42.         }
  43.         if($counter >  $sqrt){
  44.             print $palindrome."\n";
  45.         }
  46.     }
  47. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement