package EstructurasControl;

import java.util.Scanner;

public class For {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        // 1.Escribe un algoritmo que imprima por pantalla los números del 0 al 10.

        /*for (int i = 0; i <= 10; i++) { //USO de <= para llegar al número que deseamos (y que este lo incluya)
            System.out.println(i);
        }*/

        // 2. Escribe un algoritmo que imprima por pantalla los números del 1 al 100

        /*for (int i = 1; i <= 100; i++) {
            System.out.println(i);
        }*/

        // 3. Escribe un algoritmo que imprima por pantalla los números del 75 al 0 (en orden decreciente).

        //for (int i <=75; i = 0; i--) { }
        //3 Preguntas
            //1. ¿Cuál es el primer valor? 75 [i=75]
            //2. ¿Cuál es la condición para que continue y finalice?[i>=75]
            //3. ¿Qué va a hacer en cada vuelta para acercarse a la condición de finalización? [i--]
        /*for (int i =75; i >= 0; i--) {
            System.out.println(i);
        }*/

        // 4. Escribe un algoritmo que imprima por pantalla los números pares del 0 al 1.000 (no está permitido el uso de condicionales).

        /*for (int i = 0; i <= 1000; i+=2) {
            System.out.println(i);
        }*/

        // 5. Escribe un algoritmo que realice la suma de los 100 primeros números (Ejemplo 0, 1 => (0+1), 2 => (1+2), 3 => (1+2+3) …)

        /*int sumador = 0;
        for (int i = 1; i <= 100 ; i++) {
            sumador+=i;
            System.out.println("Para i:"+i+" el valor es: "+sumador);
        }*/

        // 6. Escribe un algoritmo que muestre por pantalla el número de impares entre 0 y 540.

        /* for (int i = 1; i <= 540 ; i+=2) {
            System.out.println(i);
        }*/

        // 7 .Escribe un algoritmo que solicite un número, e imprima por pantalla la tabla de multiplicar de ese número.

        /*Scanner sc = new Scanner(System.in);
        System.out.println("Dime un número: ");
        int numero = sc.nextInt();

        for (int i = 0; i <= 10 ; i++) {
            int resultado = numero * i;
            System.out.println(numero + " x " + i + " = " + resultado);
        }*/

        // 8. Escribe un algoritmo que solicite un número, calcule la factorial (n!) y muestre el resultado al final del bucle. (La factorial de un número es ese número multiplicado por sus anteriores => [5! = 5*4*3*2*1]).

        /*Scanner sc = new Scanner(System.in);
        System.out.println("Dime un número: ");
        int numero = sc.nextInt();

        int multiplicador = 1;
        for (int i = numero; i > 1  ; i--) {
            System.out.println("Registro acumulado "+multiplicador+" * "+i+" (índice) = " + (multiplicador*i));
            multiplicador*=i;

        }
        //¿Cuándo imprimo por pantalla? → Cuando tengo el resultado final, cuando termina el bucle
        System.out.println("El factorial de "+numero+" es "+multiplicador);*/

        // 9. Escribe un algoritmo que imprime un conjunto de números del [100,-100] con un decremento de 20.

        /* for (int i = 100; i >= -100 ; i-=20) {
            System.out.println(i);
        }*/

        // 10. Diseña un algoritmo que determine si un número N es primo (un número primo sólo puede ser divisible por él mismo y por 1).


        System.out.println("Introduce un número: ");
        int numero = sc.nextInt();
        boolean NoPrimo = false; //Entendemos que hasta que se demuestra lo contrario todos los númneros son primos.

        int divendo = numero;
        for (int i = numero-1; i > 1; i--) {
            //Definición de número PRIMO: Aquél número que es divisible únicamente por él mismo y por 1.

            //Es por eso, que para comprobar los números primos tenemos que obviar estos números
            //¿Cómo lo hacemos? Diciendo a la estructura del bucle for que empiece por el número dado -1, y
            // que la condición de finalización sea mientra sea superior a 1.

            //Un número es divisible por otro si al aplicar la operación de división el resto da 0.
            if (divendo % i == 0){
                NoPrimo=true;
            }
            //System.out.print("i= " + i);
            //System.out.println(" divisor = " + divendo);
            System.out.println("Obteniendo resto de "+divendo+"/"+i+" = "+(divendo % i));
        }
        //HA TERMINADO EL BUCLE
        if (NoPrimo){
            System.out.println("El número "+numero+" NO ES PRIMO");
        }else{
            System.out.println("El número "+numero+" ES PRIMO");

        }



    }
}
