python - 验证列表中哪些数字是素数
问题描述
我正在尝试验证列表中的哪些数字是素数。
vetor = [2,3,4,5,11,15,20]
divisions_list = []
def isprime():
divisions = 0
i = 0
for i in range(1, vetor[i+1]):
if i % i == 0:
divisions = divisions + 1
divisions_list.append(divisions)
if divisions == 2:
print('The number {} is prime'.format(vetor[i]))
else:
print('The number {} is not prime'.format(vetor[i]))
print(isprime())
但这不起作用,我只收到:
数字 3 不是素数 数字 4 是素数 无
我怎样才能解决这个问题?
解决方案
您已经有一段代码接受一个数字并检查它是否是素数,然后您没有使用它,而是重新发明了轮子并在此过程中破坏了它(例如,您重新使用i
了导致除以零的并尝试检查列表是否等于 2,而不是检查其长度是否为 2)。
使用函数重用工作代码并进行一些改进:
你并不关心有多少数字除以你检查的数字。一个数字将其除以使该数字不是素数就足够了
我们可以从 2 开始除法检查,从数学上证明,向上到数字的平方根就足够了
from math import sqrt
def is_prime(n):
for i in range(2, int(sqrt(n)) + 1):
if n % i == 0:
return False
return True
然后将它与数字列表一起使用:
vector= [2, 3, 4, 5, 11, 15, 20]
for n in vector:
if is_prime(n):
print(n, 'is a prime')
else:
print(n, 'is not a prime')
输出
2 is a prime
3 is a prime
4 is not a prime
5 is a prime
11 is a prime
15 is not a prime
20 is not a prime
推荐阅读
- haskell - 单子的这种概括有一个通用名称吗?
- mysql - 如何对“分组依据”子句进行排序,以便返回的值是最后一个
- python - 在 python 中仅提取 txt 文件的第二列的更好方法?
- javascript - React - 如何创建链式级联辅助函数
- android - RecyclerView:没有附加适配器;跳过布局没有数据显示
- instagram - 查看 Instagram 中是否存在帐户的最佳 API?
- sass - 错误:编译我自己的引导主题时,`mix($color-1, $color-2, $weight: 50%)` 的参数 `$color-2` 必须是颜色
- python - 在 Python 中使用 ctypes 访问 DLL 返回的对象的内容
- ruby-on-rails-5.1 - 提交输入错误后,f.submit 在返回表单时不起作用 Rails 5.1.6
- sql - 在 Access 查询中添加第三个加入时出现问题