Índice (Logaritmo Discreto) em Perl

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

[ Hits: 3.443 ]

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

Diminuir ou aumentar o brilho de notebook

Wallpapers aleatórios no Fluxbox

Muda o wallpaper do X-Windows

Role-Playing Script

Viva o Linux for Torsmo


  

Comentários

Nenhum comentário foi encontrado.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts