Python中求非素数

Python中求50以内的非素数。

img


这是我编写的程序,通过求素数这个思路来求,但结果是错的,不知道问题出自哪里,希望有人帮忙解答一下~

把if n%i!=0改为if n%i==0,然后把else分支里的打印语句,放到break前一行即可,即当n可以整除1到n-1之间的任意一个数,则n不是素数,则打印它,然后break退出循环,开始判断下一个数即可。

修改如下:


for n in range(49,1,-1):
    for i in  range(2,n):
  # 如果n 可以整除任意一个 1到n-1之间的数,则此数不是素数,则打印它
  # 然后beak退出循环,判断下一个数
        if n%i==0: 
            print(n,end=' ')
            break         


img

def is_prime(n):
    if n <= 1:
        return False
    for i in range(2, int(n**0.5) + 1):
        if n % i == 0:
            return False
    return True

non_primes = [x for x in range(50) if not is_prime(x)]
print(non_primes)

n%i!=0修改为n%i==0