在写上一篇文章的过程中,我想确认一下文章中的数字
确实是质数。这在我手动将图像转换为文本的过程中非常有用:错误导致无法得到质数。例如,我一开始在图像中没有看到 9,直到我将其中四个 8 改成 9 后才得到质数。
但过程中出现了一个问题。简单地将字符串转换为整数不起作用。它产生了以下错误:
SyntaxError:超过整数字符串转换的限制(4300):值有 5382 位数字;使用 sys.set_int_max_str_digits() 来增加限制 – 对于巨大的整数文字,考虑使用十六进制来避免十进制转换限制。
然而,错误信息中建议的修复方法不起作用。不过,将数字存储为多个字符串(即图像的每一行),并进行我自己的基数转换确实有效。
从 sympy 导入 isprime 旗线 = [ "888888888888888888888888888888888888888888888883 ... "88888111888881118888811188888111888881118888811188888111888883 ... "88888111888881118888811188888111888881118888811188888111888883 ... "88888888811188888111888881118888811188888111888888111888888881 ... "88888888811188888111888881118888811188888111888888111888888881 ... "888881 ... "88888111888881118888811188888111888881118888811188888111888883 ... "888888888111888881118888811188988111888881118888883 ... "88888888811188888111889881118888811188888111888881118888883 ... "888881 ... "888881 ... "8888888881118898811188888811188888811188888811188888881118888888881 ... "88888888811188888111889881118888811188888111888881118888883 ... "88888111888881118888811188888111888881118888811188888111888883 ... "88888111888881118888811188888111888881118888811188888111888883 ... "88888888811188888111888881118888811188888111888888111888888881 ... "88888888811188888111888881118888811188888111888888111888888881 ... "888881 ... "88888111888881118888811188888111888881118888811188888111888883 ... "888888888888888888888888888888888888888888888883 ... "888888888888888888888888888888888888888888888883 ... “1 ... “1 ... “1 ... “3 ... “3 ... “3 ... “1 ... “1 ... “1 ... “3 ... “3 ... “3 ... “1 ... “1 ... “1 ... “3 ... “3 ... “3 ... ] m = int(标志线[0]) 对于范围内的 i (1,len (flaglines)): 线 = 标志线[i] x = int(行) m = m * 10**len(行) + x 打印(isprime(n))
文章“在 Python 中将非常长的字符串转换为整数”最先出现在John D. Cook上。
原文: https://www.johndcook.com/blog/2025/08/15/very-long-string-to-int/