在给定的数字范围内查找素数
Finding prime numbers within a given range of numbers
这个shell脚本程序有什么问题?
该程序是关于在 numbers.But 的给定范围内查找素数,当我给出范围 20 到 100.But 时,它还会显示一些数字,如 25,77 等作为素数范围为 20 到 30 那么它不会将 25 显示为质数 number.Seems 就像嵌套的 for 循环在输入大时并行 运行。
代码如下:
read -p "Enter a Range of number (a to b) : " a b
echo "Prime numbers in the given range are :"
for ((i=$a;i<=$b;i++))
do
max1=`echo | awk "{print sqrt($a)}"`
max2=`printf %.0f "$max1"`
maxCap=$max2
check=0
for (( j=2;j<=$maxCap;j++ ))
do
if [ $(($i%$j)) -eq 0 ]
then
check=1;
break;
fi
done
if [ $check -eq 0 ]
then
echo -n "$i "
fi
done
看看
#!/bin/bash
read -p "Enter a Range of number (a to b) : " a b
echo "Prime numbers in the given range are :"
for ((i=$a; i<=$b; i++))
do
max=$(bc <<< "scale=0; sqrt($i)")
check=0
for ((j=2; j<=$max; j++))
do
if (( $i % $j == 0))
then
check=1
break
fi
done
if [ $check -eq 0 ]
then
echo -n "$i "
fi
done
这一行:
max1=`echo | awk "{print sqrt($a)}"`
你正在计算 a
的平方根,但它应该是 i
:
max1=`echo | awk "{print sqrt($i)}"`
因为您正在寻找 i
的除数的上限。
通过该更改,脚本似乎可以正常工作。
这个shell脚本程序有什么问题? 该程序是关于在 numbers.But 的给定范围内查找素数,当我给出范围 20 到 100.But 时,它还会显示一些数字,如 25,77 等作为素数范围为 20 到 30 那么它不会将 25 显示为质数 number.Seems 就像嵌套的 for 循环在输入大时并行 运行。
代码如下:
read -p "Enter a Range of number (a to b) : " a b
echo "Prime numbers in the given range are :"
for ((i=$a;i<=$b;i++))
do
max1=`echo | awk "{print sqrt($a)}"`
max2=`printf %.0f "$max1"`
maxCap=$max2
check=0
for (( j=2;j<=$maxCap;j++ ))
do
if [ $(($i%$j)) -eq 0 ]
then
check=1;
break;
fi
done
if [ $check -eq 0 ]
then
echo -n "$i "
fi
done
看看
#!/bin/bash
read -p "Enter a Range of number (a to b) : " a b
echo "Prime numbers in the given range are :"
for ((i=$a; i<=$b; i++))
do
max=$(bc <<< "scale=0; sqrt($i)")
check=0
for ((j=2; j<=$max; j++))
do
if (( $i % $j == 0))
then
check=1
break
fi
done
if [ $check -eq 0 ]
then
echo -n "$i "
fi
done
这一行:
max1=`echo | awk "{print sqrt($a)}"`
你正在计算 a
的平方根,但它应该是 i
:
max1=`echo | awk "{print sqrt($i)}"`
因为您正在寻找 i
的除数的上限。
通过该更改,脚本似乎可以正常工作。