#!/usr/local/bin/perl -w use Math::Big qw(primes); use Math::Pari qw(factorint); @primes = primes(100); # los 100 primeros primos # $prodp=$prod2=1; # for $i (@primes){ # $prodp *= $i; # } # $prod2 = 2**100; # print "$prodp\n$prod2\n"; # print "1234567890"x4, "\n"; while (){ chomp; last if (/__END__/); $count++; $nombre[$count]=$_; $n[$count]=shift @primes; $hash{$n[$count]} = $nombre[$count]; print "$count) $nombre[$count] -> $n[$count]\n"; } print "Número de formación: "; chomp ($num = ); $resp=1; if ($num =~ /\*/){ $num = eval($num); }elsif ($num =~ /\,/){ for $i (split /,/,$num){ $resp *= $n[$i]; } $num = $resp; } die "Wrong, I need a number" if (!defined $num || $num<2 || $num != int $num || $num+0 ne $num); print "El código asociado es $num\n"; $resp = factorint( $num ); print "$resp\n"; $resp =~ s/(\d+)\,/$hash{$1},/g; print "$resp\n"; @resp = split /;/, $resp; for $i (@resp){ print "$i\n"; } __DATA__ Prevención de riesgos Ofimática básica Matemáticas financieras Inglés Creación de páginas html Linux Administración linux Programación Perl Programas CGI Alemán Chino __END__ Es un experimento para codificar la formación recibida de tal manera que el código sea creciente y que identifique cada curso con la simple factorización. Tiene la ventaja sobre la codificación binaria que un curso puede recibirse más de una vez y ser recogido por el código sin ambigüedades. BUGS La lista de cursos debe figurar por orden de importancia No sé si será capaz sin usar bignum de manejar listas largas