#!/bin/bash

function es_primo() {
    local num=$1
    local i=2

    if [ $num -lt 2 ]; then
        return 1
    fi

    while [ $((i * i)) -le $num ]
    do
        if [ $((num % i)) -eq 0 ]; then
            return 1
        fi
        i=$((i + 1))
    done

    return 0
}


function calcular_raiz_cuadrada() {
    local num1=$1
    local num2=$2

    if [ $num1 -gt $num2 ]; then
        mayor=$num1
    else
        mayor=$num2
    fi

    raiz=$(echo "scale=2; sqrt($mayor)" | bc)
    echo "La raíz cuadrada del número mayor ($mayor) es: $raiz"
}

function calcular_factorial() {
    local num1=$1
    local num2=$2

    if [ $num1 -lt $num2 ]; then
        menor=$num1
    else
        menor=$num2
    fi

    factorial=1
    for ((i=2; i<=menor; i++))
    do
        factorial=$((factorial * i))
    done

    echo "El factorial del número menor ($menor) es: $factorial"
}

function menu() {
    echo "--------------- Menú --------------"
    echo "1) Verificar si dos números son primos"
    echo "2) Calcular la raíz cuadrada del número mayor"
    echo "3) Calcular el factorial del número menor"
    echo "4) Salir"
    echo "-----------------------------------"

    read -p "Ingrese una opción: " opcion

    case $opcion in
        1)
            read -p "Ingrese el primer número: " num1
            read -p "Ingrese el segundo número: " num2
            if es_primo $num1 && es_primo $num2; then
                echo "Ambos números son primos."
            elif es_primo $num1 || es_primo $num2; then
                echo "Solo uno de los números es primo."
            else
                echo "Ninguno de los números es primo."
            fi
            ;;
        2)
            read -p "Ingrese el primer número: " num1
            read -p "Ingrese el segundo número: " num2
            calcular_raiz_cuadrada $num1 $num2
            ;;
        3)
            read -p "Ingrese el primer número: " num1
            read -p "Ingrese el segundo número: " num2
            calcular_factorial $num1 $num2
            ;;
        4)
            echo "Saliendo..."
            exit
            ;;
        *)
            echo "Opción inválida. Por favor, ingrese una opción válida."
            ;;
    esac
}

while true
do
    menu
    echo
done

