Advertisement
guedes_acp

prime_palindrome

Apr 25th, 2014
138
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Perl 1.61 KB | None | 0 0
  1. #!/usr/env/perl
  2.  
  3. #################################
  4. #   guedes.acp      #
  5. #   forum-invaders.com.br   #
  6. #   Brazil-Goias        #
  7. #################################
  8.  
  9. use warnings;
  10. use strict;
  11. use feature 'say';
  12. use Math::Prime::Util ':all';
  13.  
  14. our $sco;
  15. our $time = time();
  16.  
  17.  
  18. sub main{
  19.     say "Current time: $time";
  20.  
  21.     $time = palindrome($time); 
  22.     LOOP: while(1){
  23.         if(is_prime($time)){
  24.             if ($time == reverse $time){
  25.                 say "result:\t$time";
  26.                 exit;
  27.             }
  28.             else{
  29.                 $time = palindrome($sco);
  30.             }
  31.         }              
  32.        
  33.         else{
  34.             $time = next_prime($time);
  35.         }
  36.     }
  37. }  
  38.  
  39.  
  40. #Gerador de palindromo
  41.  
  42. our @long_int;
  43.    
  44. sub palindrome {
  45.     my $longint = shift;
  46.     $sco = '';
  47.     my $n;
  48.     splice(@long_int, 0);
  49.     @long_int = split //, $longint;
  50.     my $scalar_long_int = scalar @long_int;
  51.     if($scalar_long_int/2 == int ($scalar_long_int/2)){
  52.         $n = _par($scalar_long_int, $longint)}
  53.     else{$n = _impar($scalar_long_int, $longint)}
  54.     return $n;
  55.  
  56. }
  57.  
  58. sub _par{
  59.     my ($scalar, $val) = @_;
  60.     my $new_number;
  61.     for(my $i = 0; $i <= ($scalar/2 -1); $i++){
  62.         $new_number .= $long_int[$i]}
  63.     my $a = $#long_int - ($scalar/2);
  64.     $sco = $new_number;
  65.     $sco++;
  66.     $sco .= 0 x scalar (split(//, $new_number));
  67.     $new_number .= reverse $new_number;
  68.     say "\t ===> par";
  69.     return $new_number;
  70. }
  71.  
  72. sub _impar{
  73.     my ($scalar, $val) = @_;
  74.     my $midle = $long_int[int $scalar/2];
  75.     my $new_number;
  76.     for(my $i = 0; $i <= ((int ($scalar/2) -1)); $i++){
  77.         $new_number .= $long_int[$i]}
  78.     $sco = $new_number . $midle;
  79.     $sco++;
  80.     $sco .= reverse $new_number;
  81.     $new_number .= ($midle . reverse $new_number);
  82.     say "\t ===> impar";
  83.     return $new_number;
  84. }
  85.  
  86.  
  87. main();
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement