Вот мой сценарий:Не работает ли мой скрипт проверки подлинности bash?
#!/usr/bin/env bash
#for checking whether given number is prime or not
#typeset -i NUMBER
NUMBER=$1
if (($NUMBER <= 1));then
echo "A prime number must be greater than 1!"
exit 0
fi
if (($NUMBER == 2 || $NUMBER == 3));then
echo "$NUMBER is a PRIME number."
exit 0
fi
check=$(((($NUMBER**2)+17)%12))
if (($check == 6));then
echo "$NUMBER is a PRIME number."
else
echo "$NUMBER is not a PRIME number."
fi
exit 0
Обычно это работает, но смотреть на это:
./prime2 12345765498743607656323978968565589876654541139797868554123589679789867896789789789789789789897789
A prime number must be greater than 1!
Кажется, что число доказыванию не будет интерпретировать в правильном направлении. Любые подсказки?
Число больше, чем допустимое целое число в оболочке Bourne. Bash пытается проклинать числа за пределами '(2^31) -1' или' (2^63) -1', в зависимости от вашей архитектуры – Inian
Ваша простая проверка числа не работает. Рассмотрим _n_ = 25. Ваша формула принимает 25 ** 2, которая равна 625, добавляет 17 для получения 642 и принимает модуль с 12, что равно 6, поэтому вы сообщаете, что 25 = 5 * 5 является простым, что неверно. – user448810
@ user448810 Правильно .... я должен просмотреть мой код! Спасибо. – RELiABLE