Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/env/perl
- use warnings;
- use strict;
- use feature 'say';
- use Math::Prime::Util ':all';
- sub main{
- my $time = time();
- say "Current time: $time";
- while(1){
- if($time == reverse $time){
- if (is_prime($time)){
- say($time);
- exit;
- }
- else{$time = palindrome(next_prime($time))}
- }
- else{$time = palindrome((next_prime($time)))}
- }
- }
- #Verifica se o valor é palindromo
- # se nao acha o palindromo mais proximo
- sub palindrome {
- my $n = shift; # recebe o valor
- ################################
- # elimina todos palindromos para
- $n = reverse $n;
- $n++ if ($n % 2 == 0);
- $n = reverse $n;
- # logica: se um palindromo tem
- # o primeiro numero par
- # logo ele será par!
- ################################
- my $r; #resposta
- if($n == reverse $n){$r = $n}
- # se $n já é palindromo $r = $n
- #se nao
- else{
- #3215022
- my $s = int $n * (0.1 ** (int scalar split(//, $n) * 0.5));
- # obtem metade dos digitos de $n
- my $s_ = int ((reverse $n) * (0.1 ** (int scalar split(//, $n) * 0.5)));
- # obtem metade dos digitos do inverso de $n
- my $s1 = (scalar split(//, $n) % 2 != 0) ? int $s * 0.1 : $s;
- # trata os casos de numero de digitos impar
- # if($s < reverse$s_){ #se $n for menor que $s . $s1
- # # que é o palindro desse grupo
- #
- # $s++;
- # # incrementa a primeira parte do numero
- # $r = $s . reverse $s1; # gera o palindromo
- # }
- #
- # else{ #agora $s < $s_
- # # os casos de $s == $s_ foram tratados no inicio
- # #dessa rotina
- $s++;
- $r = $s . reverse $s1; # gera o palindromo
- # }
- }
- return $r;
- }
- main();
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement