我一生中第一次从零开始学习编程。我正在学习Python语言。我的第一个困难任务是写Algorythm,它检查数字是否是素数。
脚本应该以非常简单的方式工作。输入:
是主(29)
你应该得到这样的输出:
数字29是质数。
或
数字29不是质数。
我没有在网上查到任何解决方案。我自己做的。我的假设如下:
-
在学校里,我记得素数只除以1本身。
-
“0”和“1”不是质数
所以我写了一个代码,检查给定的数字是否被从2到(数字-1)的所有数字所除。例如,如果给定值为“6”,脚本将首先检查6是否除以2。如果这是真的,这意味着数字不是质数。如果6不除以2,脚本将检查6是否除以3。如果是这样,这意味着数字不是质数。如果是“7”,脚本将检查7/2、7/3、7/4、7/5、7/6。
代码如下:
def is_prime(number):
if number == 0 or number == 1:
print(f"The number {number} is NOT the prime number.")
elif number == 2:
print(f"The number {number} is the prime number.")
else:
for i in range(2, number):
if number % i == 0:
check = "is NOT"
break
else:
check = "is"
print(f"The number {number} {check} the prime number.")
但后来,我意识到了三件事:
-
如果数字除以2,肯定不是质数
-
如果数字不除以2,则可以除以3或5。
-
如果数字不除以2,不除以3,也不除以5,这意味着这个数字是质数。本规则的唯一例外是这三个数字2、3和5。
就这样。所以我写的代码如下
def is_prime(number):
if number > 1:
if (number %2 == 0 and number != 2) or (number %3 == 0 and number != 3 ) or(number %5 == 0 and number != 5):
print(f"The number {number} is NOT the prime number. ")
else:
print(f"The number {number} is the prime number. ")
else:
print(f"The number {number} is NOT the prime number. ")
我认为两种解决方案都可以。
如果我错了请纠正我
但我想问你,从编程的角度来看,哪种解决方案更好?