【发布时间】:2016-08-03 02:49:58
【问题描述】:
我编写了这个程序,它会告诉你输入的两个 multiples 因数。前任。如果我输入 35(一个半素数),程序会输出 5 和 7,这是乘以 35 的两个素数。
但我想知道是否有更简洁或 Python 的方式来遍历这个元组,这样我就不必编写您在下面看到的所有“elif”语句。
如果我不需要依赖任何外部库,那就太好了。
# multiples of semiprimes 4 - 49
tuple1 = ( 2, 3, 5, 7 )
# tuple 1 calculations
while True:
try:
semiprime = int(input('Enter Semiprime: '))
except ValueError:
print('INPUT MUST BE AN INTEGER')
continue
# index 0 - 3
if (tuple1[0]) * (tuple1[0]) == semiprime:
print((tuple1[0]), (tuple1[0]))
elif (tuple1[0]) * (tuple1[1]) == semiprime:
print((tuple1[0]), (tuple1[1]))
elif (tuple1[0]) * (tuple1[2]) == semiprime:
print((tuple1[0]), (tuple1[2]))
elif (tuple1[0]) * (tuple1[3]) == semiprime:
print((tuple1[0]), (tuple1[3]))
# index 1 - 3
elif (tuple1[1]) * (tuple1[0]) == semiprime:
print((tuple1[1]), (tuple1[0]))
elif (tuple1[1]) * (tuple1[1]) == semiprime:
print((tuple1[1]), (tuple1[1]))
elif (tuple1[1]) * (tuple1[2]) == semiprime:
print((tuple1[1]), (tuple1[2]))
elif (tuple1[1]) * (tuple1[3]) == semiprime:
print((tuple1[1]), (tuple1[3]))
# index 2 - 3
elif (tuple1[2]) * (tuple1[0]) == semiprime:
print((tuple1[2]), (tuple1[0]))
elif (tuple1[2]) * (tuple1[1]) == semiprime:
print((tuple1[2]), (tuple1[1]))
elif (tuple1[2]) * (tuple1[2]) == semiprime:
print((tuple1[2]), (tuple1[2]))
elif (tuple1[2]) * (tuple1[3]) == semiprime:
print((tuple1[2]), (tuple1[3]))
#index 3 - 3
elif (tuple1[3]) * (tuple1[0]) == semiprime:
print((tuple1[3]), (tuple1[0]))
elif (tuple1[3]) * (tuple1[1]) == semiprime:
print((tuple1[3]), (tuple1[1]))
elif (tuple1[3]) * (tuple1[2]) == semiprime:
print((tuple1[3]), (tuple1[2]))
【问题讨论】:
-
@jedwards 的方式是智慧!嵌套的 for 循环似乎也可以。
-
您可以计算给定数的素数分解,而不是将自己限制在预先计算的素数列表中,使用素数检查函数或生成素数的函数,如 Eratostenes 筛
标签: python python-3.x tuples