打印数字可以在Python中被素数整除

时间:2017-09-07 12:44:58

标签: python

我想创建一个按顺序从列表中打印数字的函数:

- 数字可被0和1整除

- 可以被素数整除的数字(所有数字除以2,然后数字可被3整除,等等)

我的代码中有两个函数。基本" max"功能和" prime_numbers"将素数打印到给定数字的函数,例如, prime_numbers(50)。两者都很好。

这是我的功能的一部分我遇到了问题:

if max(x) >= 2: 
    divisors = prime_numbers(maks(x)) 
    for i in divisors:
        sel = [x % i == 0 for x in i]
        result.append([i for i in sequence if sequence in sel])
        sequence = [i for i in sequence if i not in sequence]

对于循环是一团糟。我想要做的是在R中编写相同功能时所做的事情。

sel <- !as.logical(sequence %% i) 
result <- c(result,sequence[sel]) 
sequence <- sequence[!sel]

&#39;序列&#39;已在代码中声明,它包含列表中大于或等于2的数字。 &#39;结果&#39;也被声明,它包含小于2的数字。

我想迭代除数(prime_numbers)和:

  • &#34; SEL&#34;包含逻辑答案,该数字是否可被给定的除数整除
  • 我想追加来自&#34;序列&#34;的数字。可以整除(sel中的TRUE值)到之前的&#34;结果&#34;变量
  • 我想删除可以整除的数字,并且已经附加到&#34;结果&#34;来自&#34;序列&#34;所以我可以迭代另一个除数。

我比R更熟悉R而且比较容易。我尝试用列表推导做一些事情,但我不太了解它。

1 个答案:

答案 0 :(得分:1)

应该这样做:

# result and sequence are defined higher
# and are lists
if max(x) >= 2: 
    divisors = prime_numbers(maks(x)) 
    for i in divisors:
        result += [x for x in sequence if x % i == 0]

作为你回答的评论我编辑了我的答案,这应该做的工作