viernes, 28 de febrero de 2014

Programame: Divisores del factorial

El factorial de un número n es el resultado de multiplicar todos los números entre 1 y el propio n:
fact(n) = 1 · 2 · … · (n − 1) · n
Además, fact(0) = 1.
La pregunta que hoy nos hacemos no es cuál es el factorial de un número; ni siquiera cuál es el último dígito del factorial. La pregunta que nos hacemos es: si dividimos n! por un número p, ¿el resto es cero?
Por ejemplo, el factorial de 6 es 720. Si lo dividimos por 8 el resto es cero pero si lo dividimos por 42 no.

Entrada

La entrada estará compuesta de varios casos de prueba. Cada caso de prueba consiste en una línea con dos números positivos, p y n, menores que 231, siendo p un número primo1. La entrada termina con un caso de prueba donde ambos números son negativos; para este último no se generará salida alguna.

Salida

Para cada caso de prueba, el programa escribirá YES si p divide a n! y NO en caso contrario. Cada veredicto irá en una línea diferente.

Entrada de ejemplo

2 5
7 500000
7 3
-1 -1

Salida de ejemplo

YES
YES
NO 

package programamedivisoresdelfactorial;
import java.util.Scanner;
public class ProgramameDivisoresDelFactorial {

    public static void main(String[] args) {
        Scanner leo = new Scanner(System.in);
        int factorial,divisor,cont;
      
      
        divisor=leo.nextInt();
        factorial=leo.nextInt();
      
        while (divisor>0 || factorial>0) {
            if ((divisor==1)||(divisor<=factorial)&&((divisor>=0)&&(factorial>=0)))System.out.println("YES");
            else System.out.println("NO");
            divisor=leo.nextInt();
            factorial=leo.nextInt();
        }
  
    }
}