求大佬帮忙 质数问题
对于标准输入中的每一行,给定一个正整数,您需要输出不超过标准输出的质数的个数。当输入文本为空时,程序必须完成。
在这个问题中,请不要使用(Eratosthenes’s)筛算法。
另外要求输入形式为
2
10
100
1000
这样允许跨行输入 对你的题目有点不理解,要不举个列子?{:10_245:} 是输入一个整数,输出不大于这个数的所有质数?还是输入很多整数,挑出里面的质数? 本帖最后由 Tac 于 2020-11-23 21:52 编辑
小伤口 发表于 2020-11-23 21:16
对你的题目有点不理解,要不举个列子?
是输入一个数字,输出不大于这个数的质数的个数
比如输入10,10以下质数为2,3,5,7一共四个,输出为4
上面
2
10
100
1000的输出就是
1
4
25
168 本帖最后由 Tac 于 2020-11-23 21:52 编辑
jackz007 发表于 2020-11-23 21:24
是输入一个整数,输出不大于这个数的所有质数?还是输入很多整数,挑出里面的质数?
是输入一个数字,输出不大于这个数的质数的个数
比如输入10,10以下质数为2,3,5,7一共四个,输出为4
上面
2
10
100
1000的输出就是
1
4
25
168 import math
def prime(n):
r = False
if n > 1:
r = True
for k in range(2 , int(math . sqrt(n)) + 1) :
if k < n and n % k == 0:
r = 0
break
return r
s = input() . strip()
if s:
d = 0
for k in range(2 , int(s) + 1) :
if prime(k) : d += 1
print(d) 我好像写的有点蠢 num = 'x'
ques_list = []
ans_list = []
while num != '':
while not num.isdigit():
num = input('请输入一个整数:')
if num == '':
break
if num == '':
break
ques_list.append(int(num))
num = 'x'
for each in ques_list:
if each == 2:
ans_list.append(1)
elif each == 3:
ans_list.append(2)
else:
each_list = []
for n in range(2, each+1):
if n == 2:
each_list.append(n)
continue
i = 1
while i ^ 2 < n:
i += 1
if (n % i) == 0:
break
if i ^ 2 >= n:
each_list.append(n)
ans_list.append(len(each_list)+1)
for i in ans_list:
print(i) jackz007 发表于 2020-11-23 22:17
可以改一下成允许输入为
2
10
100
1000
这种形式的吗?
因为我输入的时候好像只能一个数一个数这样输入不能跨行输入 braga 发表于 2020-11-23 22:20
能解决问题就好,你这个正好符合我的要求{:10_256:}
页:
[1]