Большое целочисленное деление по модулю не очень убедительно - PullRequest
0 голосов
/ 15 ноября 2018

Посмотрите на это:

>>>from mpmath import mp

>>> 20988936657440586486151264256610222593863921 % 2623617082180073274358906876623916797788160
291280009243618888211558641
>>> 20988936657440586486151264256610222593863921 % 5247234164360146548717813753247833595576320
291280009243618888211558641 <<<HOW CAN THIS BE THE SAME ANSWER AS ABOVE?
>>> mp.fdiv(20988936657440586486151264256610222593863921, 5247234164360146548717813753247833595576320)
mpf('4.00000000000000005551115123125782779)
>>> mp.fdiv(20988936657440586486151264256610222593863921, 2623617082180073274358906876623916797788160)
mpf('8.00000000000000011102230246251565558)

Я пытаюсь написать программу, которая возвращает true, если большое число простое. Как вы, наверное, уже знаете, Python имеет свои пределы. Не только с числами с плавающей запятой, но и с большими числами выше дециллиона. Если мой Python 3.7 (64-разрядный) может поддерживать большие целые числа вплоть до:

import sys
int(sys.float_info.max)
179769313486231570814527423731704356798070567525844996598917476803157260780028538760589558632766878171540458953514382464234321326889464182768467546703537516986049910576551282076245490090389328944075868508455133942304583236903222948165808559332123348274797826204144723168738177180919299881250404026184124858368

... тогда почему я не могу сделать простое по модулю число выше и не получить несоответствия? Может кто-нибудь направить меня к другому инструменту, чтобы помочь мне, или я что-то упускаю?

...