Índice (Logaritmo Discreto) em Perl

Publicado por Perfil removido (última atualização em 26/04/2013)

[ Hits: 2.920 ]

Download indice-001.pl




O problema do índice se resume a:

"Dado dois inteiros N e B, qual o menor expoente I tal que B elevado à I e dividido por N tenha resto igual a 1?"

Se ao invés deste resto 1 for usado um valor R, com o valor de R estando entre 0 e N-1 tem-se então o problema do logaritmo discreto.

Para B=2 e N=31, I vale 5.  => 2,4,8,16,32 => 32/31 resto = 1

Para B=4 e N=60, não existe resposta válida. => 4, 16, 64 => 64/60 resto 4 e permanece num ciclo fechado.

Ou 64%60 = 4, que é como se escreve em algumas linguagens.

Este programa calcula índice por brute-force.

  



Esconder código-fonte

#!/usr/bin/perl

use strict;
use warnings;


sub indice {

   my ($base, $mod) = (shift, shift);
   my ($index, $acum) = (1, $base % $mod);

   $base %= $mod;

   do {

      $acum *= $base;
      $acum %= $mod;
      $index++;

   } until ($acum == $base || $acum == 1);

   ($acum==1) ? return $index : return -1;

}

my $B = 5;
my $N = 64;
my $I = indice($B, $N);

print "$I\n";

Scripts recomendados

Gravar CDROM

Role-Playing Script

Tirando screenshots facilmente !

Configurar ADB no linux

MyBF - Interpretador de BrainFuck


  

Comentários

Nenhum comentário foi encontrado.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts