Это слишком долго для комментария.
Мерсенна числа очень легко вычислить. Они всегда на единицу меньше, чем степень 2:
select n, cast(power(cast(2 as numeric), n) - 1 as numeric(1000,0))
from generate_series(1, 100, 1) gs(n)
order by n;
Задача состоит в том, чтобы определить, является ли полученное число простым числом. Мерсенн знал, что n
должно быть простым, чтобы число, соответствующее номеру Мерсенна, было простым.
Как быстро работают компьютеры, если число имеет более дюжины или двух дюжин или около того цифр, это исчерпывающий поискиз всех факторов не представляется возможным. Из приведенного выше кода видно, что исчерпывающий поиск становится невозможным задолго до сотого числа Мерсенна .
Чтобы определить, является ли такое число простым, используется много математики -- некоторые из них придуманы или вдохновлены этой конкретной проблемой. Я почти уверен, что было бы довольно сложно реализовать какой-либо из этих тестов первичности в реляционной базе данных.