相关疑难解决方法(0)

OverflowError:long int太大而无法转换为float

我试图得到一个非常大的数字的平方根但我得到错误:deltaSqrt = pow(delta,0.5)OverflowError:long int太大而无法转换为float

在我看来,delta等于:

5097524159124305711208346976972093994517918559319839193986818402316359809127198287961957143680580475665158537123211669238507145109614915183501090991258372348911567096198391700545859284651871243167548321047645673131690445736385731455226353155143585522960326625070327122610654962530056330418391386124854577090206480385789275416714631025155369128530489779489101162403615113670950177532664946764525175541382065187304866582420329863524912760301704277886453413147449455323732476653550495366827445013669840800229684474814585992820804300231060966713580804079322252173910482245551821723868004571663524727449944378683955667216

我该怎么做才能得到这个数字的平方根?

python square-root python-2.7

4
推荐指数
1
解决办法
6674
查看次数

在python中使用数学模块的sqrt函数来获取长数

我正在使用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的值大于预期值.这里发生了什么?是否有一些概念我在这里错了?我怎么能找到大数字的根?

python long-integer

4
推荐指数
2
解决办法
4584
查看次数

处理大数字python 2.7(运行时错误)

我必须创建一个程序,在以下无限序列中找到第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)

python algorithm runtime

4
推荐指数
1
解决办法
336
查看次数

检查一个数字是否是另一个数字的完美幂

例如,243是3的完美幂,因为243 = 3 ^ 5。

我以前一直在使用(math.log(a) / math.log(b)).is_integer(),我认为效果很好,但是后来我在上面的示例中进行了尝试,由于浮点运算,它实际上返回4.999999999999999。因此,它仅对非常小的数字(少于我发现的大约100)可靠。

我想我可以使用循环执行重复乘法...即将i设置为3,然后是9,然后是27,然后是81,然后是243,这等于目标,所以我们知道这是一个完美的幂。如果它达到大于243的程度,那么我们知道它不是完美的力量。但是我正在循环中运行此检查,因此这似乎效率很低。

那么,还有其他方法可以可靠地检查数字是否是另一个的完美幂吗?

python math

3
推荐指数
1
解决办法
3699
查看次数

Python 返回 elif 语句

我试图检查传递的数字是否是有效的完美平方

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

2
推荐指数
1
解决办法
8482
查看次数

为什么我的小蟒蛇斐波那契探测器失败了?

出于某种原因,我必须确定一个大数字是否是斐波纳契数,所以我从互联网复制一些代码并稍微修改它,当它是大输入时似乎运行不好.这是代码:

# 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 algorithm fibonacci

1
推荐指数
1
解决办法
128
查看次数

如何检查数字是否为整数,具有良好的精度?

有类似的问题:检查变量是否是整数,但我看不到我的问题的答案.

我的意思是,最近我和很多人打架,所以我的朋友建议我安装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,取平方根,然后它必须是整数以满足等式.这就是我需要它的原因.

python integer diophantine

0
推荐指数
1
解决办法
1120
查看次数

检查列表中的完美方块

我想识别数字列表中完美正方形的数字,例如:

a = [3, 4, 8, 16, 21, 58, 144]  # return [4, 16, 144]
Run Code Online (Sandbox Code Playgroud)

python python-3.x

0
推荐指数
1
解决办法
2627
查看次数