📌  相关文章
📜  Bash shell 脚本来查找一个数字是否完美

📅  最后修改于: 2022-05-13 01:57:29.979000             🧑  作者: Mango

Bash shell 脚本来查找一个数字是否完美

在本文中,我们将讨论如何编写一个 bash 脚本来判断一个数字是否完美。完全数被定义为一个正数,它等于它的真除数之和。最小的数是 6 ex= 1,2,3 是 6 的除数和 1+2+3=6

方法一:使用While循环

  • 使用 read 命令读取输入。
  • 然后以条件 i <= no/2 运行 while 循环。
  • 检查 no%i 是否等于 0 如果为 true 则将 i 添加到 ans 。
  • 退出while循环后,检查获得的变量sum的值是否等于无变量。
  • 如果等于则使用 echo 命令返回“$no 是一个完美的数字”,否则“$no 不是一个完美的数字”。
# !/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

输出:

1) 完全数

图=输出1

2)不是一个完美的数字

图=输出2

方法 2:使用 For 循环

  • 使用 read 命令读取输入。
  • 然后使用 for 循环并迭代直到 no(input)。
  • 检查 no%i 是否等于 0 如果为 true 则将 i 添加到 ans 。
  • 退出 for 循环后,检查获得的变量 sum 的值是否等于 no variable 。
  • 如果等于则使用 echo 命令返回“$no 是一个完美的数字”,否则“$no 不是一个完美的数字”。
# !/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

输出:

1) 完全数

图=完美

2) 不完全数

图=不完美