九层之台,起于垒土,你我皆是垒土人✔
愿我的文章对你有所帮助!
欢迎关注点赞评论,共同学习,共同进步!
求出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")
点赞:随手点赞是种美德,是大佬们对于本人创作的认可!
评论:往来无白丁,是你我交流的的开始!
收藏:愿君多采撷,是大佬们对在下的赞赏!