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) 完全数
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) 不完全数