Определить является ли число простым
Объясните, пожалуйста в чем ошибка
--Задание Напишите алгоритм, определяющий является ли значение некоторой целочисленной переменной простым числом.
--План. Уменьшаем делитель на 1 пока не получим в остатке от деления исходного числа на делитель нуль(составное) либо исходное число(простое)
--Вариант в котором делитель будет также простым числом пока не рассматриваю
declare @PersonId int = 37 --исходное число
declare @bufPersonId int = @PersonId --делитель
while ((@PersonId % @bufPersonId)!= @PersonId) and ((@PersonId % (@bufPersonId-1))!= 0) --пока @bufPersonId не равен 1 и не найден делитель
set @bufPersonId = @bufPersonId-1 --уменьшаем делитель на 1
if (@bufPersonId = 1) --если делитель еденица
Print ('Это простое число')
else --если делитель найден
Print ('Это не простое число')
Ответы (1 шт):
Автор решения: Qwertiy
→ Ссылка
http://sqlfiddle.com/#!18/9eecb/86085
declare @n as int = 200
;with cte_n as (
select 2 as d
union all
select d + 1 from cte_n
where d <= SQRT(@n) + 1
)
select @n, cast(MIN(IIF(@n % d = 0, 0, 1)) as bit) as "Is Prime?"
from cte_n
option (maxrecursion 0)