鱼C论坛

 找回密码
 立即注册
查看: 1112|回复: 9

[已解决]求大佬帮忙 质数问题

[复制链接]
发表于 2020-11-23 20:30:44 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
对于标准输入中的每一行,给定一个正整数,您需要输出不超过标准输出的质数的个数。
当输入文本为空时,程序必须完成。
在这个问题中,请不要使用(Eratosthenes’s)筛算法。
另外要求输入形式为
2
10
100
1000
这样允许跨行输入
最佳答案
2020-11-23 22:20:48
  1. num = 'x'
  2. ques_list = []
  3. ans_list = []
  4. while num != '':
  5.     while not num.isdigit():
  6.         num = input('请输入一个整数:')
  7.         if num == '':
  8.             break
  9.     if num == '':
  10.         break
  11.     ques_list.append(int(num))
  12.     num = 'x'
  13. for each in ques_list:
  14.     if each == 2:
  15.         ans_list.append(1)

  16.     elif each == 3:
  17.         ans_list.append(2)
  18.     else:
  19.         each_list = []
  20.         for n in range(2, each+1):
  21.             if n == 2:
  22.                 each_list.append(n)
  23.                 continue
  24.             i = 1
  25.             while i ^ 2 < n:
  26.                 i += 1
  27.                 if (n % i) == 0:
  28.                     break
  29.                 if i ^ 2 >= n:
  30.                     each_list.append(n)
  31.         ans_list.append(len(each_list)+1)
  32. for i in ans_list:
  33.     print(i)
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-11-23 21:16:10 | 显示全部楼层
对你的题目有点不理解,要不举个列子?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-11-23 21:24:41 | 显示全部楼层
        是输入一个整数,输出不大于这个数的所有质数?还是输入很多整数,挑出里面的质数?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-11-23 21:48:01 | 显示全部楼层
本帖最后由 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
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-11-23 21:48:31 | 显示全部楼层
本帖最后由 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
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-11-23 22:17:07 | 显示全部楼层
  1. import math

  2. def prime(n):
  3.     r = False
  4.     if n > 1:
  5.         r = True
  6.         for k in range(2 , int(math . sqrt(n)) + 1) :
  7.             if k < n and n % k == 0:
  8.                 r = 0
  9.                 break
  10.     return r

  11. s = input() . strip()
  12. if s:
  13.     d = 0
  14.     for k in range(2 , int(s) + 1) :
  15.         if prime(k) : d += 1
  16. print(d)
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-11-23 22:20:16 | 显示全部楼层
我好像写的有点蠢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-11-23 22:20:48 | 显示全部楼层    本楼为最佳答案   
  1. num = 'x'
  2. ques_list = []
  3. ans_list = []
  4. while num != '':
  5.     while not num.isdigit():
  6.         num = input('请输入一个整数:')
  7.         if num == '':
  8.             break
  9.     if num == '':
  10.         break
  11.     ques_list.append(int(num))
  12.     num = 'x'
  13. for each in ques_list:
  14.     if each == 2:
  15.         ans_list.append(1)

  16.     elif each == 3:
  17.         ans_list.append(2)
  18.     else:
  19.         each_list = []
  20.         for n in range(2, each+1):
  21.             if n == 2:
  22.                 each_list.append(n)
  23.                 continue
  24.             i = 1
  25.             while i ^ 2 < n:
  26.                 i += 1
  27.                 if (n % i) == 0:
  28.                     break
  29.                 if i ^ 2 >= n:
  30.                     each_list.append(n)
  31.         ans_list.append(len(each_list)+1)
  32. for i in ans_list:
  33.     print(i)
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-11-23 22:22:09 | 显示全部楼层

可以改一下成允许输入为
2
10
100
1000
这种形式的吗?
因为我输入的时候好像只能一个数一个数这样输入不能跨行输入
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-11-23 22:34:39 | 显示全部楼层

能解决问题就好,你这个正好符合我的要求
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-24 13:06

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表