|
|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
为标准输入(stdin)的每一行给定一个正整数,需要输出不超过该整数的质数个数。当输入文本为空行时,程序必须完成。
要求:可以使用Eratosthenes’s筛算法,另外该问题中对计算速度要求较高,这意味着代码应该尽可能快地回答更大的数字情况。
也就是说代码需要能在可接受的时间内正确地回答像100000或10000000这样的大数的情况。
请将编码的主要思路记录在备注中。
下图为输入输出示例
- def get_primes(n: int) -> list:
- """
- return a list containing all prime numbers less than n.
- """
- if n <= 2:
- return []
- isprime = [True for _ in range(n)]
- result = [2]
- for i in range(3, n, 2):
- if isprime[i]:
- result.append(i)
- for j in range(0, len(result)):
- if i * result[j] >= n:
- break
- isprime[i * result[j]] = False
- if i % result[j] == 0:
- break
- return len(result)
- lst=[]
- n=input()
- while n:
- n=int(n)
- lst.append(n)
- n=input()
- for n in lst:
- print(get_primes(n))
复制代码
|
|