Определить является ли число простым

Объясните, пожалуйста в чем ошибка

--Задание Напишите алгоритм, определяющий является ли значение некоторой целочисленной переменной простым числом. 
--План. Уменьшаем делитель на 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)
→ Ссылка