Bash shell script para encontrar si un número es perfecto o no

En este artículo, discutiremos cómo escribir un script bash para saber si un número es perfecto o no. Un número perfecto se define como un número positivo que es igual a la suma de sus divisores propios. El menor no es 6 ex= 1,2,3 son divisores de 6 y 1+2+3=6

Método 1: usar el bucle while

  • Lea la entrada usando el comando de lectura.
  • Luego ejecute while loop con la condición i <= no/2 .
  • Compruebe si no%i es igual a 0 o no, si es verdadero, luego agregue i a ans.
  • Después de salir del bucle while, comprueba si el valor obtenido de la suma variable es igual a ninguna variable o no.
  • Si es igual, devuelve “$no es un número perfecto”, de lo contrario, “$no es un número perfecto” usando el comando echo.
# !/bin/bash

echo "Enter a number"

# reading input from user 
read no  

# initializing the value of i
i=1

ans=0


# check if the value of left operand is less 
# than or equal to the value of right operand
# if yes, then the condition becomes true
while [ $i -le $((no / 2)) ]   

do
        # Checks if the value of two operands are
        # equal or not; if yes, then the condition
        # becomes true
        if [[ $((no%i)) -eq 0  ]] 
        then

                ans=$((ans + i))

fi

i = $((i + 1))

done

# Checks if the value of two operands are equal 
# or not; if yes, then the condition becomes true
if [ $no -eq $ans ]  
then
        # printing output
        echo "$no is perfect" 
        else
        
        # printing output
        echo "$no is NOT perfect" 
fi

Producción:

1) número perfecto 

Figura= salida 1

2) no es un número perfecto

Figura= salida 2

Método 2: Usando For Loop

  • Lea la entrada usando el comando de lectura.
  • Luego use for loop e itere hasta que no (entrada).
  • Verifique si no%i es igual a 0 o no, si es verdadero, luego agregue i a ans.
  • Después de salir del bucle for, compruebe si el valor obtenido de la variable sum es igual a ninguna variable o no.
  • Si es igual, devuelve “$no es un número perfecto”, de lo contrario, “$no es un número perfecto” usando el comando echo.
# !/bin/bash
echo "Enter a number"
read no  
i=1
ans=0
for i in 1 2 3 4 5 .. no  
do
        if [[ $((no%i)) -eq 0  ]]  
        then
            ans=$((ans + i))
            
fi
i=`expr $i + 1`
done

if [ $no -eq $ans ]  
then
        echo "$no is perfect"
        else
        echo "$no is NOT perfect"
fi

Producción: 

1) número perfecto

higo = perfecto

2) número no perfecto

higo = no perfecto

Publicación traducida automáticamente

Artículo escrito por kamal251199 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *