Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/env/perl
- #################################
- # guedes.acp #
- # forum-invaders.com.br #
- # Brazil-Goias #
- #################################
- use warnings;
- use strict;
- use feature 'say';
- use Math::Prime::Util ':all';
- our $sco;
- our $time = time();
- sub main{
- say "Current time: $time";
- $time = palindrome($time);
- LOOP: while(1){
- if(is_prime($time)){
- if ($time == reverse $time){
- say "result:\t$time";
- exit;
- }
- else{
- $time = palindrome($sco);
- }
- }
- else{
- $time = next_prime($time);
- }
- }
- }
- #Gerador de palindromo
- our @long_int;
- sub palindrome {
- my $longint = shift;
- $sco = '';
- my $n;
- splice(@long_int, 0);
- @long_int = split //, $longint;
- my $scalar_long_int = scalar @long_int;
- if($scalar_long_int/2 == int ($scalar_long_int/2)){
- $n = _par($scalar_long_int, $longint)}
- else{$n = _impar($scalar_long_int, $longint)}
- return $n;
- }
- sub _par{
- my ($scalar, $val) = @_;
- my $new_number;
- for(my $i = 0; $i <= ($scalar/2 -1); $i++){
- $new_number .= $long_int[$i]}
- my $a = $#long_int - ($scalar/2);
- $sco = $new_number;
- $sco++;
- $sco .= 0 x scalar (split(//, $new_number));
- $new_number .= reverse $new_number;
- say "\t ===> par";
- return $new_number;
- }
- sub _impar{
- my ($scalar, $val) = @_;
- my $midle = $long_int[int $scalar/2];
- my $new_number;
- for(my $i = 0; $i <= ((int ($scalar/2) -1)); $i++){
- $new_number .= $long_int[$i]}
- $sco = $new_number . $midle;
- $sco++;
- $sco .= reverse $new_number;
- $new_number .= ($midle . reverse $new_number);
- say "\t ===> impar";
- return $new_number;
- }
- main();
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement