Python 查找给定范围内的特殊数字的数量

Python 查找给定范围内的特殊数字的数量,python,algorithm,numbers,Python,Algorithm,Numbers,我无法降低这个问题的复杂性。请给出一些更好的方法 有没有我不知道的数学公式,或者可以用更好的方法来做 说明: A special number is not divisible by any number of the form Z*Z where (Z>1). 问题:查找给定范围内的特殊数字数量 整数限制:10^9 我是这样做的: import math def special(x): flag=1 i=2 if(x=

我无法降低这个问题的复杂性。请给出一些更好的方法

有没有我不知道的数学公式,或者可以用更好的方法来做

说明:

 A special number is not divisible by any number of the form Z*Z where (Z>1).
问题:查找给定范围内的特殊数字数量

整数限制:10^9

我是这样做的:

    import math
    def special(x):
        flag=1
        i=2
        if(x==0 or x==1 or x==2):
            return 1
        while(i*i <= x):               //This is the best i can think to limit the numbers.
            if(x%(i*i)==0):
                flag=0
                break
            i=i+1
        return flag

    t=int(raw_input())
    while(t):
        x,y=map(int,raw_input().split())
        count=0
        for i in xrange(x,y+1):
            if(special(i)):
                count+=1
        print(count)
        t=t-1
导入数学
特殊def(x):
标志=1
i=2
如果(x==0或x==1或x==2):
返回1
而(i*i在
special(x)
中,你只需要迭代小于或等于sqrt(x)的素数。
所以我会预先计算一个素数列表()。

为什么只有素数?假设数字是36,那么它可以被6*6整除。所以在特殊函数中,我们需要检查6,它不是素数。可能是重复的。它的重复。感谢链接。