一个人可以降低Python的整体准确性吗?

时间:2014-06-16 19:02:50

标签: python-3.x

我正在制作一个计算素数的程序,我看看我正在测试的剩余可能的素数以及我到目前为止的所有素数,但是如果我到达我正在比较PossPrime的点那就停止超过其平方根的任何东西。 (如果需要,我可以解释一下)。我不关心sqrt小数点后面的任何数字;有没有办法告诉Python不要费心计算?

并且,有没有办法将这个方面(只测试其下的素数,直到我到达sqrt)进入for循环?

  #There's some boring setup before here that isn't problematic.
while True:
    PossWasDivis = False  #initialize the var (used to convey if the possible prime was divis)

    sqrtP = int(sqrt(PossPrime))
    for iterationOfArray in range(2, sqrtP):

       # print ("Comparing: (", PossPrime, "% (", GlobPrimeList [iterationOfArray],")) == 0")
        if (PossPrime % (GlobPrimeList [iterationOfArray])) == 0:
       #     print(PossPrime, "was divisable by", GlobPrimeList[iterationOfArray],"!  Breaking for loop")
            PossWasDivis = True
            break
        if (GlobPrimeList [iterationOfArray]) > sqrtP:
            break

    if PossWasDivis == False:    # Occurs when none of the tested #s are divis
        GlobPrimeList.append (PossPrime)
        f.write(str(PossPrime)+'\n')

    #Switch between incramenting PossPrime between 2 and 4
    if PossPrimeStat == 2:
        PossPrimeStat = 4
        PossPrime += 4
    else:                 # if PossPrimeStat == 4:
        PossPrimeStat = 2
        PossPrime += 2

GlobPrimeList预装了一些素数以便开始使用,并且在我取消该程序之前会继续无限期地查找。

1 个答案:

答案 0 :(得分:0)

  

我不关心sqrt小数点后面的任何数字;有没有办法告诉Python不要去计算它们?

不。

math.sqrt()适用于浮点值。你得到的精确度就是数学。

Python确实包含"任意精度"的函数。数学,你可以指定你将获得多少精度...但这些函数比浮点值运算的函数慢得多。如果你想要更快的代码,你将使用浮点值,并且没有办法告诉Python不计算整个值。