This program is suppose to accept a number from the user and print that many prime numbers. For some reason the program doesn\'t work. I am new to bash scripting and this is my
#!/bin/bash
#
# primes
#
read -p "Enter a number: " n
i=2
for (( i=2; i <= n; i++ ))
do
for (( j=2; j*j < i; j++ ))
do
if ((i % j == 0))
then
echo "no prime, $i divider: "$j
break
fi
done
done
i needs to run to √(n) only.
if [i % j == 0];
Should be if [ i % j == 0 ];
Same for the one on line 18
You need to place a space after the [
because [
is an application.
And you can't make calculations between the brackets. You will need to tell bash it needs to calculate the values. So you would need to change line 11 to if (( i % j == 0 ))
.
Like the others have said, the [
program needs a space before its parameters, like all programs need a space before their args. This is one reason why I prefer the test
builtin to [
with its kludgy syntax requiring a useless ]
as the last arg just to make it look pretty and sane.
if test $((i % j)) = 0; then
break
fi