1.用def来判断一个数是否为质数
质数:只能被1和本身整除
用循环解决即可
def is_prime(n):
# 定义质数的规则
if n <= 1:
return False
for i in range(2,n):
if n % i == 0: # 如果可以整除(余数=0),则FALSE
return False
return True
2.开始筛选质数
用count标记质数数量,用time.perf_counter()来计时
将找到的质数及其数量存入列表里面
可以实现输出一个质数就走一定进度条,最后为100%
def display_primes(n):
count = 0
count2 = 0
ls = []
ls2 = []
time.sleep(0.1)
print()
t = time.perf_counter()#开始计时
for z in range(2, n + 1):
if is_prime(z):
count += 1
ls.append(count)#找到的质数数量存入列表
t += time.perf_counter()#结束计时
print()
y = 0
for z in range(2, n + 1):
if is_prime(z):
y = y+1
print(100/len(ls)*y,"%--->{} ".format(z), end='')#找质数的过程加一个进度条
print()
ls2.append(z)#找到的质数存入列表
3.输出
用for循环和if来控制一行十个质数
for x in ls2:
print(x,end=' ')
count2 = count2 + 1
if count2 % 10 == 0: # 如果此行有十个质数,则换行
print()
print()
print("找到的质数为{}".format(ls2))
print("共用时{}s 质数的数量为{}".format(t,count))
4.错误返回
用try except来进行
# 开始测试
try:
n = int(input("请输入一个正整数:"))
print("------开始找质数------")
display_primes(n)
except ValueError:
print("输入错误,请输入数字")
5.总代码
import time
def is_prime(n):
# 定义质数的规则
if n <= 1:
return False
for i in range(2,n):
if n % i == 0: # 如果可以整除(余数=0),则FALSE
return False
return True
# 筛选质数
def display_primes(n):
count = 0
count2 = 0
ls = []
ls2 = []
time.sleep(0.1)
print()
t = time.perf_counter()#开始计时
for z in range(2, n + 1):
if is_prime(z):
count += 1
ls.append(count)#找到的质数数量存入列表
t += time.perf_counter()#结束计时
print()
y = 0
for z in range(2, n + 1):
if is_prime(z):
y = y+1
print(100/len(ls)*y,"%--->{} ".format(z), end='')#找质数的过程加一个进度条
print()
ls2.append(z)#找到的质数存入列表
for x in ls2:
print(x,end=' ')
count2 = count2 + 1
if count2 % 10 == 0: # 如果此行有十个质数,则换行
print()
print()
print("找到的质数为{}".format(ls2))
print("共用时{}s 质数的数量为{}".format(t,count))
# 开始测试
try:
n = int(input("请输入一个正整数:"))
print("------开始找质数------")
display_primes(n)
except ValueError:
print("输入错误,请输入数字")