Advertisement
guedes_acp

Prime Palindrome

Apr 27th, 2014
80
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Perl 1.59 KB | None | 0 0
  1. #!/usr/env/perl
  2.  
  3. use warnings;
  4. use strict;
  5. use feature 'say';
  6. use Math::Prime::Util ':all';
  7.  
  8. sub main{
  9.     my $time = time();
  10.     say "Current time: $time";
  11.  
  12.     while(1){
  13.         if($time == reverse $time){
  14.             if (is_prime($time)){
  15.                 say($time);
  16.                 exit;
  17.             }
  18.             else{$time = palindrome(next_prime($time))}
  19.         }
  20.         else{$time = palindrome((next_prime($time)))}
  21.     }
  22. }
  23.  
  24. #Verifica se o valor é palindromo
  25. # se nao acha o palindromo mais proximo
  26. sub palindrome {
  27.     my $n = shift; # recebe o valor
  28.    
  29.     ################################
  30.     # elimina todos palindromos para
  31.     $n = reverse $n;
  32.     $n++ if ($n % 2 == 0);
  33.     $n = reverse $n;
  34.     # logica: se um palindromo tem
  35.     # o primeiro numero par
  36.     # logo ele será par!
  37.     ################################
  38.    
  39.     my $r; #resposta
  40.  
  41.     if($n == reverse $n){$r = $n}
  42.     #  se $n já é palindromo $r = $n
  43.     #se nao
  44.     else{
  45.         #3215022
  46.         my $s = int $n * (0.1 ** (int scalar split(//, $n) * 0.5));
  47.         # obtem metade dos digitos de $n
  48.         my $s_ = int ((reverse $n) * (0.1 ** (int scalar split(//, $n) * 0.5)));
  49.         # obtem metade dos digitos do inverso de $n
  50.         my $s1 = (scalar split(//, $n) % 2 != 0) ? int $s * 0.1 : $s;
  51.         # trata os casos de numero de digitos impar
  52. #       if($s < reverse$s_){ #se $n for menor que $s . $s1
  53. #       # que é o palindro desse grupo
  54. #          
  55. #           $s++;
  56. #           # incrementa a primeira parte do numero
  57. #           $r = $s . reverse $s1; # gera o palindromo
  58. #       }
  59. #      
  60. #       else{ #agora $s < $s_
  61. #       #  os casos de $s == $s_ foram tratados no inicio
  62. #       #dessa rotina
  63.        
  64.         $s++;
  65.         $r = $s . reverse $s1; # gera o palindromo
  66. #       }
  67.     }
  68.     return $r;
  69. }
  70.  
  71. main();
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement