首页 > 解决方案 > 乘法表(“时间表”)中的 Python 素数检查器

问题描述

所以我制作了这个脚本,要求用户提供一张桌子。现在我想检查该表中的哪些数字是素数。

table = int(input("Which table do you want? \n"))
x = int(input("How far do you want the table to go? \n"))

for number in range(1,x+1):
    print(number * table)

print("The prime numbers in this table are:")

for number2 in range(2,x+1):
    for i in range(2,number2):
        if (number2 % i) == 0:
            break
    else:
        print(number2)

但是现在它检查表格的第一个数字和表格的最后一个数字之间的每个数字,例如:

First input = 5

Second input = 5

Result = 
2
3
5
7
11
13
17
19
23

我怎样才能让我的代码只检查表中的数字?

编辑:所以每个人都不清楚。让我解释。例如,我想制作一个脚本来检查表中的数字是否为素数。

Input 1 = 5
Input 2 = 10
5*1=5
5*2=10
5*10=50

现在我想检查该表中的哪些数字(1 到 20)是素数。

Input 1 = 5
Input 2 = 10
Prime numbers in this table are:
2,3,5,7,11,13,17,19 etc.

这些数字不在表中,但我的代码仍然可以看到它们。

标签: pythonpython-3.x

解决方案


因此,一种简单的方法是将数字存储在表格中,然后在打印之前检查表格中是否有素数。

table = int(input("Which table do you want? \n"))
x = int(input("How far do you want the table to go? \n"))

numbers = []
for number in range(1,x+1):
    print(number * table)
    numbers.append(number * table)

print("The prime numbers in this table are:")

for number2 in range(2,x+1):
    for i in range(2,number2):
        if (number2 % i) == 0:
            break
    else:
        if number2 in numbers:
            print(number2)

我们可以利用我们对问题的了解来改进这一点。我们知道只有“1次表”包含不是第一个数字的素数。所以我们可以在根本不跟踪数字的情况下解决问题!

table = int(input("Which table do you want? \n"))
x = int(input("How far do you want the table to go? \n"))

for number in range(1,x+1):
    print(number * table)

print("The prime numbers in this table are:")

if table == 1:
    for number2 in range(2,x+1):
        for i in range(2,number2):
            if (number2 % i) == 0:
                break
        else:
            print(number2)
# 0 is not prime, and nor are any negative numbers, so any table less than 1
# does not contain any primes and can be ignored!
elif table > 1:
    for i in range(2, table):
        if (table % i) == 0:
            break
    else:
        print(table)

推荐阅读