首页 > 解决方案 > 查找区间中的素数或 ELSE 查找非素数的所有可能除法

问题描述

这段代码有什么问题:

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

标签: python-3.x

解决方案


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

这与你的意思我猜的相反。

我要做的只是创建一个“标志”变量以在循环结束时进行检查。就像是:

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

这给出了Prime(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

推荐阅读