Python语言程序设计的一道改错题

按升序输出2~300间的素数并按降序输出2~300间非素数

img


旁边最好能有注释为什么这么改,谢谢啦

只要改后面两处就可以,如果第一处也算错误的话,可能题目意思2到300之间应该包括300?

import math
primes = []
notprimes = []
for i in range(2301): # 如果包括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])