python 输入一个正整数和一个n,求比该正整数的第n个小的素数。
我写的代码:
x=int(input("请输入一个正整数"))
n=int(input("请输入一个数:"))
s=[]
d=0
for a in range(1,x):
for i in range(2,a):
if a%i==0:
d+=1
if d==0:
s.append(a)
continue
s.reverse()
print(s)
但是结果不正确 求告知哪里有问题吗
你的素数的判断是错误的。
n = int(input("请输入一个数:"))
count = 0
i = 2
while count < n:
d = 0
for j in range(2, i):
if i % j == 0:
d += 1
if d == 0:
count += 1
i += 1
print(i - 1)
# coding=utf-8
"""
question:
质因子只包含2、3、5中的一个或多个数称为丑数,要求按从小到大的顺序找到第 n 个丑数
1 为第一个丑数
"""
def find_num(n):
if n < 1:
return 0
# 丑数列表初始化
num_list = [1]
t2 = t3 = t5 = 0
"""
ti 的定义:
1.对任意的 t < ti, i * num_list[t] <= num_list[-1]
2.对任意的 t > ti,i * num_list[t] > num_list[-1]
"""
while len(num_list) < n:
num_list.append(min(num_list[t2] * 2, num_list[t3] * 3, num_list[t5] * 5))
# 重新查找 t2、t3、t5
while 2 * num_list[t2] <= num_list[-1]:
t2 += 1
while 3 * num_list[t3] <= num_list[-1]:
t3 += 1
while 5 * num_list[t5] <= num_list[-1]:
t5 += 1
return num_list[-1]
if __name__ == '__main__':
for i in range(1, 20):
print(find_num(i))