[Python学习笔记]求2022内所有素数

九层之台,起于垒土,你我皆是垒土人✔
愿我的文章对你有所帮助!
欢迎关注点赞评论,共同学习,共同进步!

  求出2022内所有素数,并按每行10个数据输出

想必对于大对数刚刚接触编程语言的时候,大多数人避免不了对于N以内素数求解的题目,今天小辉再次来温习一下本题,使用两种算法进行求解!!

初级版使用最简单易懂的“埃氏筛法”:如果一个数能够被2、3、5中的一个数整除,且不等于其中任意一个数,那么这个数就不是素数,直接continue或pass掉。

Num=int(2022)
count=0
for i in range(2,Num):
  if (i%2==0 or i%3==0 or i%5==0)and(i/2!=1 and i/3!=1 and i/5!=1):
        continue
  else:
   list=i
   count=count+1//计数器
   print(list,end=",")
   if(count%10==0):
    print("\n")

通过range函数遍历值传递给i,通过条件判断语句把素数存储在list列表中,最后遍历输出

其实关键代码不过十行,对于新手比较友好,易于理解。

部分结果:

 

进阶版:为提升算法效率,现使用pow()函数对2022进行开根,即任意一个合数其必有小于或等于该合数的平方根取整后的数,即比如4,25,开根后,分别是2、5,刚好是其因数。因此采用后序遍历,即从后往进行取模运算,2021%2...2020%2...2019%2....

2021%45...2020%45。

  如果可以整除,则将该数剔除,使用列表中的pop()方法

  注意剔除的数还需加一个不等于自身的条件,否则也会被剔除!

print("2022内的素数有:")
Number=2022
Count=0
List=list(range(2,Number))
Number_sqrt=int(pow(Number,0.5))
for i in range(2,Number_sqrt+1):
    for k in range(len(List)-1,-1,-1):
     if(List[k]%i==0 and (List[k]!=i)):
      List.pop(k)

for m in range(0,len(List)) :#20个素数一行输出
    Count=Count+1
    print(List[m], end=",")
    if(Count%10==0):
        print("\n")

点赞:随手点赞是种美德,是大佬们对于本人创作的认可!


评论:往来无白丁,是你我交流的的开始!


收藏:愿君多采撷,是大佬们对在下的赞赏!

  • 7
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

kook小辉的进阶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值