shell - 查找快乐素数的 shell 代码中的问题
问题描述
这是我找到快乐素数的代码,我不知道它为什么会出错。#!/bin/bash happy(){ rem = $0 sum = $0 while [ $result -gt 0 ]; do rem = $((result%10)) p = $((rem*rem)) sum = $((sum + p)) result = $((result/10)) done return $sum
} echo "Enter a number" read num for (( i=1; i<101; i++ )) do result=$i while [ $result -ne 0 && $result -ne 4 ]; do happy $result done if [ $?==1 ]
then echo "happy number" else echo "not a happy number" fi
done
解决方案
我在您的脚本中看到很多语法错误和一些逻辑错误。这应该是一个固定版本(至少适用于 13 和 4 :))
我发现的错误:
rem = $0
和类似的:在bash中不允许分配周围的空格,rem = $0
:您分配一个从未使用过的值,rem = $0
传递给函数的sum = $0
第一个参数$1
不是$0
,- 输入编号已分配给
num
但从未使用过, - for 和 while 循环的退出条件被破坏,
- ...
#!/bin/bash
happy()
{
result=$1
sum=0
while [ $result -gt 0 ]; do
rem=$(( result % 10 ))
p=$(( rem * rem ))
sum=$(( sum + $p ))
result=$(( result / 10 ))
done
echo "$sum"
}
echo "Enter a number"
read num
result=$num
for (( i=1; i<101; i++ )) do
result=$(happy $result)
if [ $result == 1 ]; then
echo "$num is a happy number"
exit
fi
done
echo "$num is not a happy number"
推荐阅读
- android - 无障碍服务标志RequestTouchExplorationMode
- math - 如果非确定性图灵机在 f(n) 空间中运行,那么为什么它在 2^O(f(n)) 时间中运行?
- python - 尝试使用图形创建对角线图案
- python - 不明白为什么这段时间没有停止
- dynamic - 如何在 SpringRouteBuilder 中路由到 Camelhttpquery 中包含的动态 uri?
- docker - docker compose 总是构建 Dockerfile,因此它不依赖于 db
- c++ - 仅允许 QWidget 大小可被特定值整除
- visual-studio - SFTP 连接不支持的密钥格式
- reactjs - 带有反应传单的错误显示
- javascript - 从 html 中的打字稿调用函数不起作用