<?php
Class Funciones {
function f($x) {
return ((2*$x) + 2);
}
function expModRap($a,$b,$n) {
$res = 1;
echo "<br>",$a,"%",$n,"=",$a%$n;
$pot = $a % $n;
while ($b > 0) {
if (($b % 2) == 1 ) { // si es impar
$res = ($res * $pot) % $n;
}
//echo $res,"<br>";
$pot = ($pot * $pot) % $n;
$b = floor($b / 2);
}
return $res;
}
//recibe un entero positivo
// y retorno si o no es primo
function esNumeroPrimo($n){
if ($n % 2 == 0) {
return false;
}
for($i = 3; $i <= ceil(sqrt($n)); $i= $i + 2) {
if ($n % $i == 0) {
return false;
}
}
return true;
}
function genNumPriRan($numMin,$numMax) {
$aux = new Funciones();
//http://jsfiddle.net/alanwsmith/GfAhy/
while (true) {
$num = floor(mt_rand($numMin,$numMax));
if ($aux->esNumeroPrimo($num) == true) {
return $num;
}
}
}
/*funciones tomadas de: http://pages.pacificcoast.net/~cazelais/euclid.html*/
// ya no necesito estas funciones, solo para cuando crea la clave sel servidor
function gcd($a,$b) {
$funcion = new Funciones();
$a = max($a,$b);
$b = min($a,$b);
if ($b == 0) {
return $a;
}
return $funcion->gcd($b, $a % $b);
}
function gcdExt($a,$b) {
$funcion = new Funciones();
$a = max($a,$b);
$b = min($a,$b);
if ($b == 0) {
return [1,0,$a];
} else {
$c = $funcion->gcdExt($b, $a % $b);
$x = $c[0];
$y = $c[1];
$d = $c[2];
return [$y, $x - ($y * floor($a/$b)),$d];
}
}
/*termina codigo copiado*/
function generarX() {
$func = new Funciones();
return $func->genNumPriRan(17,99); // utilize estos valores para que se pueda procesar en el lado del cliente
}
}
?>