Вариант, не требующий «раскрытия неопределенностей при помощи арифметики с ограниченной точностью»:

Здесь, наоборот,

, когда

составное.
svv, с Вашим примером все понятно и тривиально, если число простое, то у него не будет делителей, следовательно ни один из сомножителей не даст целое число, кратное

, составное же число, всегда обратит, как минимум 1 из сомножителей в 0.
Изначально моя функция была такой:

,

Далее, путем, как мне казалось, правильных преобразований, я получил то, что было в начале поста.