【问题标题】:Print numbers divisible by prime numbers in Python在 Python 中打印可被素数整除的数字
【发布时间】:2017-09-07 21:27:10
【问题描述】:

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

-可被 0 和 1 整除的数字

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

我的代码前面有两个函数。基本的“max”函数和“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]

For 循环是一团糟。我想做的是我在 R 中编写相同函数时所做的事情。

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

'Sequence' 已在代码中声明,它包含列表中大于或等于 2 的数字。 'Result' 也被声明,它包含小于 2 的数字。

我想迭代除数(prime_numbers)并且:

  • “sel”包含逻辑答案,该数字是否可被给定除数整除
  • 我想将可整除的“序列”中的数字(sel 中的 TRUE 值)附加到先前的“结果”变量中。
  • 我想从“序列”中删除可整除且已附加到“结果”的数字,以便可以迭代另一个除数。

我对 R 比对 Python 更熟悉,而且在那里更容易。我试图用列表推导做一些事情,但我不理解它。

【问题讨论】:

  • "能被 0 和 1 整除的数字"...祝你好运。
  • 是的,您应该意识到 0 将是未定义的,而 1... 那么什么数字不能被 1 整除!?
  • 对不起,我只想写简单的 '0 和 1'。它对代码没有影响,因为无论如何我都没有迭代 0。
  • 这真的不清楚(我必须承认,将两个 cmets 传递到那里,让我发笑)。而且还不清楚你想要什么?像values['divisor'] = ['a_number', 'another_number'...] 这样的字典会更容易吗?还有[i for i in sequence if i not in sequence],我很确定它总是空的:)。
  • 应该首先更清楚地澄清一些变量。您是否希望输出成为初始起始列表的子列表?因此,假设您有一个名为“x”的数字列表,您是否希望该函数首先打印 x 中可被 0 整除的所有数字的列表(当然,这将始终返回一个空列表!),然后是x 中可被 1 整除的所有数字的列表(这将返回与 x 相同的列表),然后是 x 中可被 2 整除的所有数字的列表,然后是 3,然后是 5 等等。这就是你正在寻找的为了?

标签: python


【解决方案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]

作为您回答的评论,我编辑了我的答案,这应该可以完成工作

【讨论】:

  • 它真的很接近我想要的,但是'result'已经被声明并且如果它们出现在代码中它包含0和/或1,所以我必须附加它。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-07-19
  • 2019-07-21
  • 1970-01-01
  • 1970-01-01
  • 2019-04-16
  • 2018-04-10
  • 2020-08-04
相关资源
最近更新 更多