Python 3.x 找出区间中的素数,或者找出非素数的所有可能的除法

Python 3.x 找出区间中的素数,或者找出非素数的所有可能的除法,python-3.x,Python 3.x,此代码有什么问题: def Prime(a,b): for n in range(a,b): for x in range(a,n): if n % x == 0: print(n,"equales to",x,"*",n//x) else: break else: print(n,"is a prime number")

此代码有什么问题:

def Prime(a,b):
    for n in range(a,b):
        for x in range(a,n):
            if n % x == 0:
                print(n,"equales to",x,"*",n//x)
            else:
                break
        else:
            print(n,"is a prime number")

Prime(2,16)
我想在一个区间内打印所有素数,如果不是,则打印该非素数的所有可能的除法

输出:

2 is a prime number
4 equales to 2 * 2
6 equales to 2 * 3
6 equales to 3 * 2
8 equales to 2 * 4
10 equales to 2 * 5
12 equales to 2 * 6
12 equales to 3 * 4
12 equales to 4 * 3
14 equales to 2 * 7

for/else
语句的工作方式是,仅当循环耗尽而未到达
break
语句时,才会执行
else

我猜这与你的意思正好相反

我要做的就是创建一个“flag”变量,在循环结束时进行检查。比如:

def Prime(a,b):
对于范围(a,b)内的n:
_prime=True吗
对于范围(a,n)内的x:
如果n%x==0:
素=假吗
打印(n,“等于”,x,“*”,n//x)
如果是_素数:
print(n,“是素数”)
这在
素数(2,16)
上给出:

2 is a prime number
3 is a prime number
4 equales to 2 * 2
5 is a prime number
6 equales to 2 * 3
6 equales to 3 * 2
7 is a prime number
8 equales to 2 * 4
8 equales to 4 * 2
9 equales to 3 * 3
10 equales to 2 * 5
10 equales to 5 * 2
11 is a prime number
12 equales to 2 * 6
12 equales to 3 * 4
12 equales to 4 * 3
12 equales to 6 * 2
13 is a prime number
14 equales to 2 * 7
14 equales to 7 * 2
15 equales to 3 * 5
15 equales to 5 * 3