import java.util.Scanner;

public class EjerciciosJava {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        
        imprimirNumeros1a100();
        sumaPrimeros100Numeros();
        contarCifrasNumero();
        factorialDeNumero();
        numerosPares1a50();
        multiplosDe3();
        serieFibonacci();
        numerosPrimosHasta100();
        numeroPerfecto();
        numeroCapicua();

        sc.close();
    }

    public static void imprimirNumeros1a100() {
        System.out.println("11. Números del 1 al 100:");
        for (int i = 1; i <= 100; i++) {
            System.out.print(i + " ");
        }
        System.out.println();
    }

    public static void sumaPrimeros100Numeros() {
        System.out.println("12. Suma de los 100 primeros números:");
        int suma = 0;
        for (int i = 1; i <= 100; i++) {
            suma += i;
        }
        System.out.println("Suma total: " + suma);
    }

    public static void contarCifrasNumero() {
        Scanner sc = new Scanner(System.in);
        System.out.println("13. Contar cifras de un número:");
        System.out.print("Ingrese un número: ");
        int num = Math.abs(sc.nextInt());
        int contador = 0;
        do {
            num /= 10;
            contador++;
        } while (num > 0);
        System.out.println("Cantidad de cifras: " + contador);
    }

    public static void factorialDeNumero() {
        Scanner sc = new Scanner(System.in);
        System.out.println("14. Factorial de un número:");
        System.out.print("Ingrese un número: ");
        int n = sc.nextInt();
        long fact = 1;
        for (int i = 1; i <= n; i++) {
            fact *= i;
        }
        System.out.println("Factorial: " + fact);
    }

    public static void numerosPares1a50() {
        System.out.println("15. Números pares del 1 al 50:");
        for (int i = 2; i <= 50; i += 2) {
            System.out.print(i + " ");
        }
        System.out.println();
    }

    public static void multiplosDe3() {
        System.out.println("16. Múltiplos de 3 entre 1 y 100:");
        for (int i = 3; i <= 100; i += 3) {
            System.out.print(i + " ");
        }
        System.out.println();
    }

    public static void serieFibonacci() {
        Scanner sc = new Scanner(System.in);
        System.out.println("17. Serie Fibonacci hasta n términos:");
        System.out.print("Cantidad de términos: ");
        int n = sc.nextInt();
        int a = 0, b = 1;
        System.out.print("Serie: ");
        for (int i = 0; i < n; i++) {
            System.out.print(a + " ");
            int temp = a + b;
            a = b;
            b = temp;
        }
        System.out.println();
    }

    public static void numerosPrimosHasta100() {
        System.out.println("18. Números primos hasta 100:");
        for (int i = 2; i <= 100; i++) {
            if (esPrimo(i)) {
                System.out.print(i + " ");
            }
        }
        System.out.println();
    }

    public static boolean esPrimo(int n) {
        if (n < 2) return false;
        for (int i = 2; i <= Math.sqrt(n); i++) {
            if (n % i == 0)
                return false;
        }
        return true;
    }

    public static void numeroPerfecto() {
        Scanner sc = new Scanner(System.in);
        System.out.println("19. Número perfecto:");
        System.out.print("Ingrese un número: ");
        int n = sc.nextInt();
        int suma = 0;
        for (int i = 1; i < n; i++) {
            if (n % i == 0)
                suma += i;
        }
        if (suma == n)
            System.out.println(n + " es un número perfecto.");
        else
            System.out.println(n + " no es un número perfecto.");
    }

    public static void numeroCapicua() {
        Scanner sc = new Scanner(System.in);
        System.out.println("20. Número capicúa:");
        System.out.print("Ingrese un número: ");
        int n = sc.nextInt();
        int original = n, reverso = 0;
        while (n != 0) {
            int digito = n % 10;
            reverso = reverso * 10 + digito;
            n /= 10;
        }
        if (original == reverso)
            System.out.println("Es capicúa");
        else
            System.out.println("No es capicúa");
    }
}
