Я реализую функцию подсчета простых чисел π(x) с помощью алгоритма Мейселя-Лемера, основанного на работах Лемера и Лагариаса, Миллера и Одлизко. π(x) подсчитывает количество простых чисел .
Как я могу гарантировать, что π(cbrt(x)) всегда будет точным? Я думал сделать что-то вроде π(x**(1/3) + 0,5), где коэффициент ложности maybe предотвращает ошибки отклонения на единицу для функций с верхним ограничением, таких как π . В случае x = 729 аргументом будет π(9,499999999999998) или что-то далекое от целочисленной границы.
Более привлекательная идея состоит в том, чтобы используйте только целочисленную арифметику, и это достигается за счет того, что π(x) принимает только целое число x и использует точную функцию кубического корня пола (поскольку π задает точную верхнюю границу). Это полностью устраняет любые математические странности с плавающей запятой, например, отклонение результатов на какое-то эпсилон.
Я уверен, что эта проблема обсуждалась раньше. Кажется, я видел сообщение в блоге, в котором использовался метод коэффициента выдумки, но я не до конца уверен в его правильности для всех чисел с плавающей запятой разумного размера (скажем, меньше 10^20).
*На самом деле Я не уверен, что кубический корень должен быть точным, если он одинаков на протяжении всего расчета. Некоторые диапазоны циклов могут быть немного расширены, если внутри цикла проверяются точные неравенства, например, если граница j
Подробнее здесь: https://stackoverflow.com/questions/790 ... t-cuberoot
Счет простых чисел с точным кубическим корнем ⇐ Python
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Как получить ошибки при интерполяции кубическим сплайном (Python; splrep, splev)
Anonymous » » в форуме Python - 0 Ответы
- 17 Просмотры
-
Последнее сообщение Anonymous
-