Нахождение наименьшего простого множителя в скрипте bash - PullRequest
0 голосов
/ 09 июля 2019

Вот что я пытаюсь сделать:

Напишите скрипт сценария Bash factor.sh, который будет выполнять следующие действия: 1) он предлагает пользователю ввести целое число n от 10 до 100; 2) Найти наименьший (простой) коэффициент для этого числа, поэтому, если число равно 21, будет выведено сообщение «Наименьший коэффициент равен 3». Если бы число было 77, оно вывело бы «Наименьший коэффициент - 7». 3) Если число не имеет других факторов, кроме самого себя, оно должно вывести «Это число простое».

И этот код у меня есть, но я получаю сообщение об ошибке.

echo "Enter a number from 10 to 100: "
read num
if (($num >= 10 && $num <= 100 ));
        then
                for ((i = 2; i <= $num; i++));do
                        if (($num % $i == 0));
                                then
                                        prime = $i
                                        break
                        fi
                done
                if (($prime == $num));
                        then
                                echo "This number is prime."
                else
                        echo "The smallest prime fatcor is: "
                        echo $prime
                fi
fi

Я получаю сообщение об ошибке «строка 16: =: команда не найдена» для prime = $i

И "строка 20: ((: == 77: синтаксическая ошибка: ожидается операнд (токен ошибки" == 77 ")", где 77 будет введенным номером и находится в строке if (($prime == $num));

Я не уверен, что я делаю здесь неправильно. Любая помощь будет оценена.

Ответы [ 2 ]

2 голосов
/ 09 июля 2019

Пожалуйста, проверьте ниже скрипт, в котором была удалена ошибка.

Исправление: пробелы удалены prime=$i

echo "Enter a number from 10 to 100: "
read num
if (($num >= 10 && $num <= 100 ));
        then
                for ((i = 2; i <= $num; i++));do
                        if (($num % $i == 0));
                                then
                                        prime=$i
                                        break
                        fi
                done
                if (($prime == $num));
                        then
                                echo "This number is prime."
                else
                        echo "The smallest prime fatcor is: "
                        echo $prime
                fi
fi
0 голосов
/ 10 июля 2019

Предположительно, это bash упражнение по программированию, но если бы его не было и factor util , то это просто:

spf() { factor "$@" | 
        while IFS=" :" read n f g ; do
            [ "$f" = "$n" ] && \
            echo "$f is prime." || \
            echo "The smallest factor of $n is $f." ;
        done ; }
spf 53 534

Вывод:

53 is prime.
The smallest factor of 534 is 2.

Так как factor принимает ввод от STDIN , трубопровод spf также работает список чисел, например :

seq 11 2 100 | spf
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...