import math
number = int(input("请输入一个数值: "))
list1 = []
# 如果用户输入的数字大于1
if number >1:
for i in range(number+1):
# 进行判断
for j in range(2, i):
if (i % j) == 0:
break
else:
if i == 0 or i == 1:
pass
else:
list1.append(i)
else:
print("小于或者等于1的数值不是质数")
print("{}以内的数值中是质数的有{},共{}个".format(number,list1,len(list1)))
PYTHON代码,以下代码为chatgpt生成:
def isPrime(n):
if n <= 1:
return False
for i in range(2, int(n ** 0.5) + 1):
if n % i == 0:
return False
return True
count = 0
for i in range(2, 1000):
if isPrime(i):
print(i, end=" ")
count += 1
if count % 10 == 0:
print()
print("\n共计%d个素数。" % count)
程序中首先定义了一个名为isPrime的函数,用于判断一个数是否为素数。当n小于等于1时,直则歼接返回False;当n大于1时,对于从2到n的平方根的所有数进行判断,如果n能够被这些数整除,则n不是素数;如果不存在这样的数,则n是素数。
接下来孙雀冲,程序使用循环从2到999之间的数,对于每个数,调用isPrime函数进行判断。如果是素数,就打印出来,并且计数器加1。每输出10个素数,就换行。
最后,程序输出共计多少个素数。
使用方法如下:
首先找到:
接着提出问题:
搞定~~
...
就是这些啦,整理不易,看完记得点个赞岁困再走呀~
这是因为遍历过程中,兄旅李列表删除元素后,后续的元素会往前提
而遍历过程还是根据下标继续遍历,导致跳过了删除元素之后的那个元素
而i=4为合数,将该元素从list1中删除后,就会跳过之后的元素9
修改方法为:将list1中的所有质数append到一个新列表list2中,最后输出list2即可;
或者先用list2=list1.copy(),这里注意要拷贝镇雀而不能直接写为list2=list1
这样遍历list2中的数,然后从list1中删除合数,list2就不会受影羡迟响了
修改后的代码和运行结果为:
可见所有数都遍历到了,最终输出list1只剩下质数3
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)