codility CountSemiprimes

来源:互联网 发布:解析域名 编辑:程序博客网 时间:2024/06/08 09:49

Question:codility Lesson11 CountSemiprimes

My Answer:

from math import sqrtdef solution(N,P,Q):    sieve = [True] * (N + 1)    sieve[0] = False    sieve[1] = False    prime = []    i = 2    while i * i <= N:        if sieve[i] == True:            k = i * i            prime.append(i)            while (k <= N):                sieve[k] = False                k += i        i += 1    for ele in range(i,N + 1):        if sieve[ele] == True:            prime.append(ele)    primecnt = len(prime)    semiprimes = [0] * (N + 1)    for i in range(primecnt - 1):        for j in range(i,primecnt):            if prime[i] * prime[j] > N:                break            semiprimes[prime[i] * prime[j]] = 1    for i in range(1,N + 1):        semiprimes[i] += semiprimes[i - 1]    res = []    for i in range(len(P)):        res.append(semiprimes[Q[i]] - semiprimes[P[i] - 1])    return res
原创粉丝点击