Raíz Digital Prima
La raíz digital de un número es hallado adicionando todos lo dígitos en un número. Si el número resultante tiene más de un dígito, el proceso es repetido hasta temer un simple dígito.
Tu trabajo en este problema es calcular una variación de la raíz digital – una raíz digital prima. El proceso de adición descrito arriba para cuando solo queda un dígito, pero podemos para en el número original, o en cualquier número intermedio (formado por la adición) que sea número primo.
Si el proceso continúa y el resultado es un dígito que no es primo, entonces el número original no tiene raíz digital prima.
Un entero mayo que uno es llamado número primo si tiene solo dos divisores, el uno y si mismo.
· Por ejemplo, los primeros seis primos son 2, 3, 5, 7, 11, y 13.
· El número 6 tiene cuatro divisores: 6, 3, 2, y 1. Por eso 6 no es primo.
· Advertencia: en número 1 no es primo.
EJEMPLOS DE RAIZ DIGITAL PRIMA
1 Este no es un número primo, así que 1 no tiene raíz digital prima.
3 Este es un número primo, así que la raíz digital prima de 3 es 3.
4 Este no es un número primo, así que 4 no tiene raíz digital prima.
11 Este es un número primo, así que la raíz digital prima de 11 es 11.
642 Este no es un número primo, así que sumando 6 +4 + 2 = 12. Este no es un número primo, así que
sumando 1 + 2 = 3. Este si es un número primo, así que la raíz digital prima de 642 es 3.
128 Este no es un número primo, así que sumando 1 +2 + 8 = 11. Este es un número primo, así que la raíz
digital prima de 128 es 11.
886 Este no es un número primo, así que sumando 8 + 8 + 6 = 22. Este no es un número primo, así que sumando 2 + 2 = 4. Este no es un número primo, así que 886 no tiene raíz digital prima.
Entrada
La entrada contendrá un entero en cada línea en el rango
de 0 a 999999 inclusive. El fin de la entrada se indica con el
valor 0.
Salida
Si el número ingresado tiene raíz digital prima, entonces se
debe desplegar el valor original y el valor de la raíz digital
prima, caso contrario se despliega el valor original seguido
por la palabra “none”, los valores deben estar alineados con
una justificación derecha de 7 espacios, como se muestra
en el ejemplo de salida.
Ejemplo de entrada
134
11
642
128
886
0
Ejemplo de salida
1 none
3 3
4 none
11 11
642 3
128 11
886 none
Nota: la salida tiene el siguiente formato:
111111
123456789012345
4 none
642 3
SOLUCION
<?php
$num = str_replace("\n", "", fgets(STDIN));
while($num!=0){
$raizPrima=$num;
if ($num>1){
if (!isPrime($num)){
$raizPrima=raizPrima($num);
} else {
$raizPrima=$num;
}
} else{
$raizPrima='none';
}
echo str_repeat(' ', 7-strlen($num)).$num.str_repeat(' ', 8-strlen($raizPrima)).$raizPrima."\n";
$num = str_replace("\n", "", fgets(STDIN));
}
function raizPrima($num){
$sw=true;
$resp='none';
while(strlen($num)>1 && $sw) {
$k=0;
for($i=0;$i<strlen($num);$i++)
$k=$k+$num[$i];
if (!isPrime($k))
$num=(string)$k;
else {
$resp=$k;
$sw=false;
}
}
return($resp);
}
function isPrime($num)
{
$cont = 0;
for($i = 1; $i <= $num; $i++){
if($num % $i == 0)
$cont++;
}
if($cont==2)
return true;
else
return false;
}
?>