按升序输出2~300间的素数并按降序输出2~300间非素数
只要改后面两处就可以,如果第一处也算错误的话,可能题目意思2到300之间应该包括300?
import math
primes = []
notprimes = []
for i in range(2,301): # 如果包括300的话需要改成301
for j in range(2, int(math.sqrt(i)) + 1):
if i %j ==0:
notprimes.insert(0, i) # insert方法要给两个参数,表示在数组[0]的位置插入i,也就是逆序插入
break
else:
primes.append(i)
print("2 ~ 300间的素数为:",end ="")
print(primes) # 使用[::1]是倒序输出列表,题目要求正序,所以不需要
print("300 ~ 2间的非素数为:{}".format(notprimes))
望采纳,谢谢!
import math
primes = []
notprimes = []
for i in range(301, 2, -1):
for j in range(2, int(math.sqrt(i)) + 1):
if i %j ==0:
notprimes.insert(-1, i)
break
else:
primes.append(i)
def isprime(a):
if a== 2:
return True
for i in range(2,a):
if a%i == 0:
return False
return True
a = []
b = []
for i in range(2,301):
if isprime(i):
a.append(i)
else:
b.append(i)
print(a)
print(b[::-1])