繁体   English   中英

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

[英]Find number of special numbers in a given range

我无法降低此问题的复杂性。 请提供一些更好的方法。

是否存在我不知道的数学公式,或者可以采用更好的方法来完成?

问题链接

描述:

 A special number is not divisible by any number of the form Z*Z where (Z>1).

问题 :查找给定范围内的特殊数字。

Integer Limit: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

special(x)您只需要迭代小于或等于sqrt(x)的素数。 因此,我将预先计算一个素数列表( 列出N以下所有素数的最快方法 )。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM