鱼C论坛

 找回密码
 立即注册
查看: 2880|回复: 4

[技术交流] 0006-编程打卡:判断99~1001间有多少素数并打印

[复制链接]
发表于 2022-8-22 17:38:09 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 不二如是 于 2022-8-29 17:47 编辑

01.png
02.png
03.png
游客,如果您要查看本帖隐藏内容请回复


一星答案:

  1. from math import sqrt
  2. from sys import stdout
  3. h = 0
  4. leap = 1
  5. #利用sqrt()缩小范围
  6. for m in range(99,1001):
  7.     k = int(sqrt(m + 1))
  8.     for i in range(2,k + 1):
  9.         if m % i == 0:
  10.             leap = 0
  11.             break
  12.     if leap == 1:
  13.         print('%-4d' % m)
  14.         h += 1
  15.         if h % 10 == 0:
  16.             print('')
  17.     leap = 1
  18. print('总计: %d' % h)
复制代码

  1. list1=[]
  2. list2=[]
  3. count=0
  4. for i in range(99,1001):
  5.     for j in range(2,int(i**0.5)+1):
  6.         if i%j==0:
  7.             list1.append(i)
  8. for m in range(99,1001):
  9.     list2.append(m)
  10. for a in list2:
  11.     if a not in list1:
  12.         count+=1
  13.         print(a,end="  ")
  14. print('总计%d个素数' % count)
复制代码


二星答案:

  1. def prime(s, e):
  2.     flag = 1
  3.     count = 0
  4.     for i in range(s, e, 2):
  5.         for j in range(2, int(i ** 0.5)+1):
  6.             if i % j == 0:
  7.                 flag = 0
  8.                 break
  9.         if flag:
  10.             print('{:>{}}'.format(i, len(str(e))), end=' ')
  11.             count += 1
  12.             if count == 10:
  13.                 print()
  14.                 count = 0
  15.         else:
  16.             flag = 1

  17. if __name__ == '__main__':
  18.     prime(99, 1001)
  19.     print()
复制代码


三星答案:

游客,如果您要查看本帖隐藏内容请回复


基础语法:



算法讲解:


评分

参与人数 1荣誉 +5 贡献 +3 收起 理由
睦ちゃん她爹 + 5 + 3 鱼C有你更精彩^_^

查看全部评分

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-8-22 17:53:13 | 显示全部楼层
本帖最后由 柿子饼同学 于 2022-8-22 17:58 编辑

线性筛表示不服
  1. prime = []
  2. vis = [False for _ in range(1002)]

  3. for i in range(2, 1001):
  4.     if not vis[i]:
  5.         prime.append(i)
  6.     for j in range(len(prime)):
  7.         if prime[j] * i > 1001:
  8.             break
  9.         vis[prime[j] * i] = True
  10.         if i % prime[j] == 0:
  11.             break

  12. for p in prime:
  13.     if p > 99:
  14.         print(p, end = ' ')
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-8-23 10:45:08 | 显示全部楼层
1
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2022-8-23 16:30:53 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-12-4 16:54:09 | 显示全部楼层
看看三星答案
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-28 03:40

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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