我试图得到一个非常大的数字的平方根但我得到错误:deltaSqrt = pow(delta,0.5)OverflowError:long int太大而无法转换为float
在我看来,delta等于:
5097524159124305711208346976972093994517918559319839193986818402316359809127198287961957143680580475665158537123211669238507145109614915183501090991258372348911567096198391700545859284651871243167548321047645673131690445736385731455226353155143585522960326625070327122610654962530056330418391386124854577090206480385789275416714631025155369128530489779489101162403615113670950177532664946764525175541382065187304866582420329863524912760301704277886453413147449455323732476653550495366827445013669840800229684474814585992820804300231060966713580804079322252173910482245551821723868004571663524727449944378683955667216
我该怎么做才能得到这个数字的平方根?
我正在使用python中的200位数字.当使用math.sqrt(n)找到数字的平方根时,我得到了错误的答案.
In[1]: n=9999999999999999999999999999999999999999999999999999999999999999999999
999999999999999999999999998292000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000726067
In[2]: x=int(math.sqrt(n))
In[3]: x
Out[1]: 10000000000000000159028911097599180468360808563945281389781327
557747838772170381060813469985856815104L
In[4]: x*x
Out[2]: 1000000000000000031805782219519836346574107361670094060730052612580
0264077231077619856175974095677538298443892851483731336069235827852
3336313169161345893842466001164011496325176947445331439002442530816L
In[5]: math.sqrt(n)
Out[3]: 1e+100
Run Code Online (Sandbox Code Playgroud)
由于x*x(201位)大于n(200位),因此x的值大于预期值.这里发生了什么?是否有一些概念我在这里错了?我怎么能找到大数字的根?
我必须创建一个程序,在以下无限序列中找到第n个元素:
1 1 2 1 1 2 3 2 1 1 2 3 4 3 2 1......
Run Code Online (Sandbox Code Playgroud)
所以在这里你可以看到'center'增加一个,'center'的副元素相互反映,所以我们可以将这个序列分成小组:
[1][121][12321][1234321].....
Run Code Online (Sandbox Code Playgroud)
所以任务是找到给定n的序列中的第n个元素.例如,我们将7作为输入并且必须返回3,因为序列中的第7个元素是3.这里的问题是当n超出10^15我的程序时显示运行时错误,而输入可以大到10^100000.这是我的代码:
n = int(input())
fin = n
number = long(1)
counter = long(0)
while n>0:
n = n - number
number = number+2
counter = counter + 1
mid = long((counter-1)*(2+2*(counter-1))/2+1)
place = long(counter - abs(mid-fin))
if fin==0:
print 0
else:
print place
Run Code Online (Sandbox Code Playgroud) 例如,243是3的完美幂,因为243 = 3 ^ 5。
我以前一直在使用(math.log(a) / math.log(b)).is_integer(),我认为效果很好,但是后来我在上面的示例中进行了尝试,由于浮点运算,它实际上返回4.999999999999999。因此,它仅对非常小的数字(少于我发现的大约100)可靠。
我想我可以使用循环执行重复乘法...即将i设置为3,然后是9,然后是27,然后是81,然后是243,这等于目标,所以我们知道这是一个完美的幂。如果它达到大于243的程度,那么我们知道它不是完美的力量。但是我正在循环中运行此检查,因此这似乎效率很低。
那么,还有其他方法可以可靠地检查数字是否是另一个的完美幂吗?
我试图检查传递的数字是否是有效的完美平方
return True if(math.sqrt(num)%2 == 0 or \
(math.sqrt(num)+1) % 2 == 0 ) else False
Run Code Online (Sandbox Code Playgroud)
我想知道是否可以通过将 if 语句分成两部分来写得更好,例如
return True if(math.sqrt(num)%2 == 0)
elif ((math.sqrt(num)+1) % 2 == 0 )
else False
Run Code Online (Sandbox Code Playgroud)
有人可以帮助我如何在这里使用 elif 或者是否有更好的方法。
谢谢。
出于某种原因,我必须确定一个大数字是否是斐波纳契数,所以我从互联网复制一些代码并稍微修改它,当它是大输入时似乎运行不好.这是代码:
# 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
# Returns true if n is a Fibinacci Number, else false
def isFibonacci(n):
# n is Fibinacci if one of 5*n*n + 4 or 5*n*n - 4 or both
# is a perferct square
b = 5*n*n+4;
c = 5*n*n-4;
return isPerfectSquare(b) …Run Code Online (Sandbox Code Playgroud) 有类似的问题:检查变量是否是整数,但我看不到我的问题的答案.
我的意思是,最近我和很多人打架,所以我的朋友建议我安装Python.我今天打开它,这样我就可以计算大数字并且具有良好的精度,但是...如何使用这种精度?我的意思是,如果我做了类似的pow(31,123)工作,但如果我想检查数字是否为整数,我得到:
>>> (4.00000000000001).is_integer()
False
>>> (4.000000000000001).is_integer()
False
>>> (4.0000000000000001).is_integer()
True
>>> (4.00000000000000001).is_integer()
True
Run Code Online (Sandbox Code Playgroud)
我想写一个简单的循环来找到一些丢番图方程的解,我需要从非常大的数字取平方根并检查它是否是整数,但现在我处于紧张状态.有人可以帮助我或者给我一个如何获得更好精度的建议吗?
例:
例如:$ 2x ^ 2 = 1 + y ^ 31 $,其中x,y是整数.我的想法是循环,我增加y(从1开始),加1,除以2,取平方根,然后它必须是整数以满足等式.这就是我需要它的原因.
我想识别数字列表中完美正方形的数字,例如:
a = [3, 4, 8, 16, 21, 58, 144] # return [4, 16, 144]
Run Code Online (Sandbox Code Playgroud) python ×8
algorithm ×2
diophantine ×1
fibonacci ×1
integer ×1
long-integer ×1
math ×1
python-2.7 ×1
python-3.x ×1
runtime ×1
square-root ×1