python - 循环并查找复合/素数并将其保存到集合中
问题描述
我试图遍历一个值列表并找出每个数字是素数还是复合数,并将其保存在函数下的集合中。我遇到的问题是它没有找到任何东西,它只是在保存一个运行中的数字。例如,这个脚本只是保存从 1 到 19 的所有数字。我也明白它实际上并没有将值保存在一组中,但我会弄清楚的。大多数情况下需要帮助才能使值成为素数/复合值。
def prime(num):
prime_set = set()
composite_set = set()
for i in range(2,num):
if num % i == 0:
composite_set.update([num])
else:
prime_set.update([num])
return(prime_set)
for num in range(1,20):
print(num,prime(num))
解决方案
因为你的if
/else
挡住了,如果里面的任何一个数没有平分prime
,num
都会被加进去。由于不均分,只要至少为 3,将始终添加到.prime_set
range(2,num)
num
num-1
num
num
num
prime_set
您要做的只是在找不到任何除数num
的情况下添加。prime_set
对您的代码进行最简单的更改是。
def prime(num):
prime_set = set()
composite_set = set()
for i in range(2,num):
if num%i == 0:
composite_set.add(num)
break # You don't need to keep searching
if not composite_set: # That is, it's empty.
prime_set.add(num)
return prime_set
推荐阅读
- ruby-on-rails - Heroku 上的 Rails 应用程序中出现无法解释的 H18 错误
- multithreading - 对象和线程交互建模
- javascript - React & Redux 应用程序在带有断点的调试模式下表现正确,而在没有断点时表现不正确
- jekyll - 在处理页面之前在 Jekyll 中解析 YAML 前端的液体变量
- ios - 在 ARKit 中两个节点的中点显示 SCNText
- python - 将二进制数组转换为概率分布
- json - 我想使用 Jq 将文本文件数据转换为 JSON
- apache-kafka - Kafka连接partition.duration.ms和刷新大小之间的属性关系?
- angular - “可观察”类型上不存在属性“超时”