package bucles.For;

import java.util.Scanner;

public class Ejercicios {
	public static void main(String[] args) {
		//1.1.	Escribe un algoritmo que imprima por pantalla los números del 0 al 10.
		
		/*for(int i=0;i<=10;i++) {
			System.out.println(i);
		}*/
		
		//1.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);
		}*/
		
		//1.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--) {
			System.out.println(i);
		}*/
		
		//1.4.	Escribe un algoritmo que imprima por pantalla los números pares del 0 al 1.000 
			//1.4.1.	Está permitido el uso de condicionales.
		/*for(int i=0;i<=1000;i++) {
			if(i%2==0) {
				System.out.println(i);
			}
		}*/
			//1.4.2.	No está permitido el uso de condicionales.
		
		/*for(int i=0;i<=1000;i+=2) {
			System.out.println(i);
		}*/
		
		//1.5.	Escribe un algoritmo que muestre por pantalla el número de impares entre 0 y 540.
		
		
		
			//1.5.1.	Está permitido el uso de condicionales.
		
			/*for(int i=0;i<=540;i++) {
				 if(i%2!=0) {
					 System.out.println(i);
				 }
			}*/
		
			//1.5.2.	No está permitido el uso de condicionales.
			
			/*for(int i=1;i<=540;i+=2) {
					 System.out.println(i);
			}*/
		
		//1.6.	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);
		}*/
		
		Scanner sc=new Scanner(System.in);
		
		
	 	//1.7.	Escribe un algoritmo que solicite un número, e imprima por pantalla la tabla de multiplicar de ese número.
		
	 	
		//1.7.1.	La tabla de multiplicar se muestra del 0 al 10.
		/*System.out.println("Introduzca un número");
		int num=sc.nextInt();
		for(int i=0;i<=10;i++) {
			int resultado = num*i;
			System.out.println(num + " x "+i+" = "+resultado);
		}*/
		//1.7.2.	La tabla de multiplicar se muestra del 10 al 0.
		/*System.out.println("Introduzca un número");
		int num=sc.nextInt();
		for(int i=10;i>=0;i--) {
			int resultado = num*i;
			System.out.println(num + " x "+i+" = "+resultado);
		}*/
		//1.7.3.	La tabla de multiplicar se muestra el 0 a N, siendo N un número solicitado por el programa hacia el usuario.
		/*System.out.println("Introduzca un número");
		int num=sc.nextInt();
		
		System.out.println("Introduzca hasta que numero quiere que se calcule");
		int num2=sc.nextInt();
		for(int i=0;i<=num2;i++) {
			int resultado = num*i;
			System.out.println(num + " x "+i+" = "+resultado);
		}*/
		
		//1.8.	Escribe un algoritmo que solicite un número, calcule la factorial (n!) y 
		//muestre el resultado al final del bucle. (El factorial de un número es ese número 
		//multiplicado por sus anteriores => [5! = 5*4*3*2*1]).
		
		
		//VERSIÓN ORIGINAL:
		/*System.out.println("Escoja un numero");
		int num1=sc.nextInt();
		int resultado=n;
		for(int i=num1;i>1;i--) {
			System.out.println("Número del que se parte "+resultado);
			System.out.println("Se multiplica por "+i);
			resultado*=i;
			System.out.println(resultado);
			System.out.println("----\n");
		}
		
		System.out.println("El resultdo de "+num1+"! es "+resultado);*/
		
		//SUGERENCIA DE MODIFICACIÓN;
		/*System.out.println("Escoja un numero");
		int num1=sc.nextInt();
		
		System.out.println("Resultado se iguala al valor dado "+num1);
		int resultado=num1;
		for(int i=num1-1;i>1;i--) {
			int resultadoAnterior= resultado;  //únicamente utilizado para pintar las trazas correctamente.
			resultado*=i;
			System.out.println("i: "+i+": "+resultadoAnterior+" * "+i+" = "+resultado);

		}
		
		System.out.println("\nEl resultdo de "+num1+"! es "+resultado);*/
		
		//1.9.	Diseña un algoritmo que determine si un número N (siendo N un número solicitado por el programa al usuario) es primo 
		//		(un número primo sólo puede ser divisible por él mismo y por 1).
		System.out.println("Dame un numero");
		int num1=sc.nextInt();
		boolean esPrimo = true; //Asumo que es primo salvo que se demuestra lo contrario.
		for(int i=num1-1; i>=2;i--) { //De que número hasta que número voy a comprobar. [5] → [4,2]
			System.out.println("Comprobando: "+num1+" % "+i);
			
			if(num1%i==0) {
				System.out.println("Encontrado un divisor que da resto 0: "+i);
				esPrimo=false;
			}
			
		}
		//Una vez terminado el bucle.
		
		if (esPrimo) {
			System.out.println("El número: "+num1+" es primo.");
		}else {
			System.out.println("El número: "+num1+" no es primo.");
		}
		
		
		
		 
		
		
	}
}
