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
2) no es un número perfecto
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
2) número 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