我正在处理非常大的数字(1,000,000位数字),我需要计算它们的平方根。我似乎在我的代码中达到了一个极限。
y = 10**309
x = y**0.5
print(x)
我得到了这个错误:
x = y**0.5
OverflowError: int too large to convert to float
代码会一直工作到10**308。但除此之外,它似乎已经崩溃了。我也已经在命令行中检查过了。同样的错误。有人能帮帮我吗?
如果这是一个python限制,有没有其他方法可以使用?
编辑:进行了代码更正。
我想要获取两个字符串中不同的索引数。
固定的东西:
字符串数据在任何索引上都只有0或1。也就是说,字符串是数字的二进制表示。
这两个字符串的长度相同。
对于上面的问题,我用python编写了下面的函数
def foo(a,b):
result = 0
for x,y in zip(a,b):
if x != y:
result += 1
return result
但问题是这些字符串是巨大的。非常大。所以上面的函数花费了太多的时间。任何我应该做的让它变得超级快的事情。
这就是我如何在c++中做同样的事情,它现在相当快,但仍然不能理
我正在尝试在python中实现RSA (我是python的新手),问题是我写的代码不能用于4位以上的数字。你知道为什么会发生这种事吗?敬请指教
p =0
q=0
n=0#modules
phyPQ = 0
e = 0 #public key exponent
d = 0#private key exponent
c = ''
m = ''
def getPrimes():
global p
global q
p = long(raw_input("Enter first prime p : "))
q = l
我被推荐使用gmpy来帮助高效地计算大量的数字。在我只使用python之前,我的脚本运行了一两天,然后内存就用完了(不确定这是如何发生的,因为我的程序的内存使用应该始终保持不变。也许是内存泄露?)
无论如何,在运行我的程序几秒钟后,我一直收到这个奇怪的错误:
mp_allocate< 545275904->545275904 >
Fatal Python error: mp_allocate failure
This application has requested the Runtime to terminate it in an unusual way.
Pleas
我正在尝试找出python中的a^b,它的编号非常大。
我的代码是:
t=raw_input()
c=[]
for j in range(0,int(t)):
n=raw_input()
a=[]
a,b= (int(i) for i in n.split(' '))
c.extend(pow(a,b))
for j in c:
print j
我得到了一个类似这样的错误:
raceback (most recent call last):
File "C:/Python26/lastdig.py", line 7,
由于某些原因,我必须确定一个大的数字是否是fibonacci数,所以我从互联网上复制了一些代码,并对其进行了一些修改,当输入很大时,它似乎不能很好地工作。这是代码:
# python program to check if x is a perfect square
import math
# A utility function that returns true if x is perfect square
def isPerfectSquare(x):
s = int(math.sqrt(x))
boo = (s*s == x);
return boo
#
我对python非常陌生,我刚刚开始使用gmpy2,但我对其中一个函数有点困惑,而gmpy的文档在这方面没有帮助:
我想用模数(以及地板)进行除法,所以我找到了f_divmod()函数:
F_divmod(.)f_divmod(x,y)返回x的商和余数除以y,商数向-Inf (地板四舍五入)四舍五入,其馀部分将具有与y. x和y必须是整数相同的符号。
但是,如果这做了我认为它应该做的事情(这可能是我的错误),它应该做:x / y % m,我看不出提供m的方法。这是错误的函数吗,还是我需要在其他地方定义一个模数?
我看到我的选择是:
c = gmpy2.f_div(a, b) % m
提
我创建了下面的python代码。它应该首先将数字的精度设置为10小数位,但是打印pi显示3.156,其中只有3位小数!有人能告诉我我做错了什么吗。
import gmpy2 as g
from ipywidgets import widgets
from IPython.display import display
button = widgets.Button(description="Click Me!")
display(button)
max_precision = g.get_max_precision()
pi = g.const_pi()
g.set_cont
我已经写了一个程序,通过使用((2^n)-1)(2^(n-1))计算出从1到1000的所有梅森素数的偶数,其中n是梅森素数。
程序是这样的:
def PrimeFinder(PotPrime):
PlaceNum=1
for x in range (int(PotPrime**0.5)):
PlaceNum=PlaceNum+1
if int(PotPrime/PlaceNum) == (PotPrime/PlaceNum):
return False
return True
TrialNum = 1
for
我在试着检查一个数字是否是一个完美的正方形。然而,我处理的是非常大的数字,所以python出于某种原因认为它是无穷大的。在代码返回"Inf“之前,它将达到1.1×10^154。有什么可以绕开的吗?下面是代码,lst变量只保存一堆非常大的数字。
import math
from decimal import Decimal
def main():
for i in lst:
root = math.sqrt(Decimal(i))
print(root)
if int(root + 0.5) ** 2 == i:
print(str(i) +
我正在编写一个Python3.4脚本,它为我做了大量的计算。这一计算涉及到计算许多,并在与其他数字的求和和乘法中使用它们中的每一个。每次计算中需要一个bc (二项式系数)时,它都会检查bc是否已经计算过。如果是的话,它将返回这个已经计算过的值。否则,它会计算它并将其存储以供以后查找。目前,计算bc "n选择k“的函数bc(n,k)看起来如下:
bcvalues = {}
def bc(n,k):
k = min(k,n-k) # take advantage of symmetry
if (n,k) in bcvalues: # check whether value
我正在开发一个been类(教学目的),我一直在使用Ruby来生成测试用例。我的班级在以下测试中失败:
a = -48197174570431531987668852939807674377435188974148779416366905274642031729688518691
b = 4322669160730708444058642850762359547515258361061655693150034467061
a / b = -11149864303351921 # Ruby answer
我在我的代码中找不到这个错误,所以我尝试用其他工具和惊喜来验证结果:o。
GMP、Jav
我的任务是使用对非常大的合成数进行因子分解。这些数字是1024位大小,大约是309个十进制数字。
我已经编写了下面的Python代码,它使用模块来保证准确性。它只是上显示的伪代码的Python实现。我阅读了该页面上的"“部分,但不确定如何实现它。
def fermat_factor(n):
assert n % 2 != 0 # Odd integers only
a = gmpy2.ceil(gmpy2.sqrt(n))
b2 = gmpy2.square(a) - n
while not is_square(b2):
a += 1
我有一个30 30的.txt文件,其中包含1一行数据(3000万位数字)
不幸的是,我尝试过的每一种方法(mmap.read()、readline()、分配1GB内存、for循环)都需要45+分钟才能完全读取文件。我在互联网上找到的每一种方法似乎都适用于每一行都很小的事实,因此内存消耗只有文件中最大的一行那么大。这是我一直在使用的代码。
start = time.clock()
z = open('Number.txt','r+')
m = mmap.mmap(z.fileno(), 0)
global a
a = int(m.read())
z.close(
我想为一些非常大的数字计算collatz序列,但我猜python处理不了这么大的数字,我不知道如何处理它。
这是我的节目:
def collatz(n):
if (n == -1 or n == 1 or n == -17 or n == -17 -2**4096):
print('break found',n)
return
if str(n)[-1] in ['1','3','5','7','9']:
#print(n)
我一直在尝试用Python实现Miller-Rabin素性测试。不幸的是,在一些质数上似乎存在问题。任何帮助都是非常感谢的。
代码:
def _isPrime(n):
if n % 2 == 0:
return False
a = [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41]
s, d = _Apart(n) # turns it into 2^s x d
print(s, d)
basePrime = False
isPrime = True
for base in a:
if base >= n-2:
我需要计算python中具有大浮点数的变量的scipy.special三伽马和迪伽马函数,但我得到了以下错误消息:
TypeError: ufunc 'psi' not supported for the input types, and the inputs could not be safely coerced to any supported types according to the casting rule 'safe'
为了精确起见,我需要将我的变量保持为大浮动。有没有人知道如何计算这些变量的迪伽玛函数和三伽马函数?谢谢。
我从Fibonacci生成质数,如下所示(使用Python,使用和实现任意精度):
from mpmath import *
def GCD(a,b):
while a:
a, b = fmod(b, a), a
return b
def generate(x):
mp.dps = round(x, int(log10(x))*-1)
if x == GCD(x, fibonacci(x-1)):
return True
if x == GCD(x, fibonacci(x+1)):
return Tr
我正在尝试乘以2^82589933,但是在python上运行它非常慢。它已经运行了近3天,通过计算甚至不到40%,并且明显地呈指数级下降。作为一名python新手,我不知道如何加速它。我尝试过多线程,但是我看不到一种合理的方法来实现多线程的简单乘法。谢谢你的帮助。
import datetime
intg = 2
exp = 82589933
x = 0
for i in range(exp):
intg = (intg * 2)
x = x + 1
if x == 100000:
x = 0
print(((i/exp)*100),'% - @',
我想写一个计算(1 / n!) * (1!+ 2!+ 3!+.+ n!)的函数。以n作为函数的参数,其结果也被截断为6个小数(不舍入)。下面是我的代码:
def going(n):
n1 = n
n2 = n
factorial = 1
back = 1
for i in range(2, n1+1):
factorial *= i
while n2>1:
this = 1
for i in range(2, n2+1):
this*=i
back+=