python - Python打印非质数
问题描述
我有一个 hackkerank 编码挑战来打印前 n 个非素数,我有工作代码,但问题是他们有一个锁定的代码,可以打印从 1 到 n 的数字以及输出,为了通过我需要的测试只打印非素数而不是 1...n 数字。我无法评论 1...n 的打印部分,因为它被阻止了。请让我知道只打印第一个 n 非素数的想法:
这是我的解决方案:
def manipulate_generator(generator, n):
if n>1:
ls=[1]
for elm in generator:
if elm>3 and len(ls)<n:
for k in range(2,elm):
if elm%k==0 and elm not in ls:
ls.append(elm)
print(elm)
if len(ls)==n:
return ls
那是我添加的代码,但这里是锁定的代码,我必须编写上面的代码以使其一次打印第一个
def positive_integers_generator():
n = 1
while True:
x = yield n
if x is not None:
n = x
else:
n += 1
k = int(input())
g = positive_integers_generator()
for _ in range(k):
n = next(g)
print(n)
manipulate_generator(g, n)
关键是 for _ in range(k): 已经打印出数字,其中包括我不想打印的数字:这是我想要的输出类型:对于 n=10,我希望它打印出来:输出:
1
4
6
8
9
10
12
14
15
16
我无法更改此代码,但上面的代码是我编写的并且可以更改...请帮帮我...谢谢期待
解决方案
为什么不扔掉我们不需要的数字呢?看看我实施的这个解决方案......
def is_prime(n):
for i in range(2, n):
if n%i == 0:
return False
return True
def manipulate_generator(generator, n):
if is_prime(n+1):
next(generator)
manipulate_generator(generator, n+1)
注意:我知道可以改进逻辑以使其更有效。但是,跳过不必要的数字打印的想法在这里很重要!
推荐阅读
- javascript - implementing church numerals and successor function
- typescript - 当前未初始化任何 firebase.app.App 实例。Angular 6 登录时出现电话错误
- python - 如何在活动之间传递包(命名元组)
- javascript - 在平台中包含 React 和 react-bootstrap(不是单页应用程序)
- apache - Why is Lighthouse failing my cached files?
- node.js - 确定进程是否在 Bash 或 Node.js 中没有响应
- javascript - 检查名称是否存在 ES6 类
- python-3.x - 熊猫将自定义函数应用于由另一列分组的一列的每一行
- vorbis - 如何使用 libvorbis 获取原始编码的 vorbis 数据?
- java - Apache Ignite Hibernate L2 缓存与 Spring Boot