Python 3.x 在Python中是否会降低总体精度?

Python 3.x 在Python中是否会降低总体精度?,python-3.x,Python 3.x,我正在做一个程序来计算素数,我看了一下我正在测试的可能素数的剩余部分,以及到目前为止所有的素数,但是如果我把这个素数和它的平方根以上的任何东西进行比较的话,请停下来。(如果需要,我可以解释)。我不关心sqrt小数点后的任何数字;有没有办法告诉Python不要费心计算这些值 还有,有没有一种方法可以将这个方面集成到for循环中(在到达sqrt之前只测试它下面的素数) #There's some boring setup before here that isn't problematic. w

我正在做一个程序来计算素数,我看了一下我正在测试的可能素数的剩余部分,以及到目前为止所有的素数,但是如果我把这个素数和它的平方根以上的任何东西进行比较的话,请停下来。(如果需要,我可以解释)。我不关心sqrt小数点后的任何数字;有没有办法告诉Python不要费心计算这些值

还有,有没有一种方法可以将这个方面集成到
for
循环中(在到达sqrt之前只测试它下面的素数)

  #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中有一些预加载的素数,可以从中开始,并继续查找更多的素数,直到我取消该程序为止

我不关心sqrt小数点后的任何数字;有没有办法告诉Python不要费心计算这些值

没有

math.sqrt()
使用浮点值。你得到的精度直接影响到数学


Python确实包含用于“任意精度”数学的函数,您可以在其中指定将获得多少精度。。。但是这些函数比在浮点值上运行的函数慢得多。如果您想要更快的代码,您将使用浮点值,并且无法告诉Python不计算整个值。

1。不,为什么会有一个只计算整数平方根的函数?2.什么意思?这已经是你的
循环了。我相当确定循环时间将主导sqrt。这就是说,在更具命令式的风格中,它有时会被倒置并表示为:
i*i
1。只是问问;2.因此
for
循环中的sqrtP被用作
迭代Farray
将要执行的最高值,但我希望循环一直执行,直到
迭代Farray
指向的列表(GlobPrimeList)中的值大于可能的素数。再次,用户2864740?我对python还很陌生;大部分的话我都听不懂。@user3743372仍然不明白你的意思。这应该是一个主要的筛子吗?另外,你应该读一读谢谢,我希望我能投票(我刚刚在这里做了我的个人资料)!不过,你有没有什么洞见来弄清楚如何使范围的顶部(在
for
循环中)成为指向sqrtP数组中的#的indexOfArray?也许你应该研究一下:一个网页显示了实现Eratosthenes筛选的不同方法。此链接直接指向使用列表的Python函数。我不知道链接中的
is_prime=[False]*2+[True]*(limit-1)
是如何工作的,并且是如何在
if is_prime[n]:
中实现的。看起来第一个函数在is_素数列表中放入了两个false和多少个true,但我不知道这在后面有什么用处。当函数运行完后,这将是一个true/false标志列表,其中true表示一个数字是素数。函数从位置0和位置1的false开始,但从位置2到结束,它从true标志开始。然后它开始查找真标志并“划掉”倍数(将其标记为假)。它找到2并划掉4、6、8、10,依此类推;找到3并划掉6、9、12、15,依此类推;找出5并划掉10、15、20、25,依此类推;你明白了。最后,它查看真标志,找出哪些数字是素数,并列出一个列表。