python - 从Python中的列表中删除数字的倍数
问题描述
我是 Python 的新手,我正在开发一个找到数字的主要因素的程序。到目前为止,我的代码如下所示:
num = int(input('\nEnter a natural number greater than 1: '))
if num <= 1:
while num <= 1:
num = int(input('\nI said greater than 1: '))
if num == 2:
print('\n', num, 'is a prime number.')
else:
toggle = 0
flist = []
for i in range(2, num - 1):
if num % i == 0:
flist.append(i)
toggle = 1
if toggle == 0:
print('\n', num, 'is a prime number.')
if toggle == 1:
print('\n', num, 'is not a prime number.')
print('\nIt\'s prime factors are:', flist)
例如,输入 30 时,我得到以下输出:
Enter a natural number greater than 1: 30
30 is not a prime number.
It's prime factors are: [2, 3, 5, 6, 10, 15]
在这种情况下,主要因素是2
, 3
, 5
。我怎样才能删除他们的倍数?谢谢你。
解决方案
我会定义一个额外的函数来检查一个数字是否是素数
def is_prime(n):
if n>1:
for i in range(2,n):
if (n % i)==0:
return False
return True
然后我会在你的代码中使用它来检查一个数字是否是素数,然后再将它添加到素数因子的最终列表中。
num = int(input('\nEnter a natural number greater than 1: '))
if num <= 1:
while num <= 1:
num = int(input('\nI said greater than 1: '))
if num == 2:
print('\n', num, 'is a prime number.')
else:
toggle = 0
flist = []
for i in range(2, num - 1):
if num % i == 0:
if is_prime(i): # append only prime numbers
flist.append(i)
toggle = 1
if toggle == 0:
print('\n', num, 'is a prime number.')
if toggle == 1:
print('\n', num, 'is not a prime number.')
print('\nIt\'s prime factors are:', flist)
这为您提供了正确的输出:
Enter a natural number greater than 1: 30
30 is not a prime number.
It's prime factors are: [2, 3, 5]
推荐阅读
- node.js - 在 Google App Engine 处理 /_ah/start 路由 NodeJ
- javascript - Asp.net RadiobuttonList onselectedindexchanged 确认
- java - 在 Akka 中使用 SLF4J
- python - 如何确定一个类是否由另一个类中的方法实例化?
- c# - UI上的Unity3D粒子系统不会在构建中显示
- c++ - 如何使用 if else 和函数在 C++ 中制作计算器?
- javascript - 如何使用 javascript、php 在 mxgraph 中的工作流编辑器中使用 xml 数据绘制图形
- javascript - 如何以最佳方式验证 joi 子模式
- r - 按值解构向量
- wordpress - 古腾堡区块验证失败(不期待孩子)