【问题标题】:Python Prime GeneratorPython Prime 生成器
【发布时间】:2018-11-12 13:23:39
【问题描述】:

是的,我知道那里有很多这样的问题,而且我的问题可能已经在我没见过的地方得到了回答。但是,我仍然有困难,不知道该怎么做。

maximum_range = int(input('How big do you want the range?'));
i = 3;
checkPrime = True;
while (i <= maximum_range):
    y = 2;
    print('i {}'.format(i))
    print('y {}'.format(y))
    halfI = int((i/2)+ 1)
    checkPrime = False;
    while (y <= halfI & checkPrime):
        y += 1
        if (i%y == 0):
            print('{} is not prime because it is divisible by' .format(i))
            checkPrime = False;
    i += 2
    if (checkPrime & y == halfI):
        print('{}s is prime' .format(i))   
    checkPrime = True;

问题是嵌套迭代不起作用,它到达'here 1',仅此而已。我还打印了 y 和 i- ,它们打印了正确的值,但它似乎什么也没做。

非常感谢那些帮助-请耐心等待,我更喜欢 Javascript。

【问题讨论】:

  • 你没有说困难是什么,你没有问过一个问题,你没有描述它是如何不令人满意的。您是否尝试过在战略位置打印变量、比较结果和其他内容以查看可能发生的情况?
  • 您遇到的困难究竟是什么?这段代码有效吗?或者你想让它产生别的东西?
  • Python 不需要在语句末尾使用分号,Python 编码人员阅读时可能会觉得这很烦人,而且最重要的是,您将它们随机分散在语句子集上。这是一个风格评论,不是你的问题。
  • 欢迎来到 SO,请花时间阅读 How to Ask 以及该页面上的其他链接。因为你的问题有点太宽泛了。专注于您的代码可能行为不端的一种方式并询问它。如果您找到了该问题的解决方案但仍然存在问题,请尝试找出答案,然后提出一个新问题。
  • 如所写,您的内部循环将永远不会运行 - 该循环的比较是否按照您认为的方式运行? ;看起来你试图通过只搜索一半的搜索空间(使用halfI)来进行优化,可能会简化并删除所有这些逻辑,看看它是否会工作,用maximum_range 的小值进行测试。

标签: python generator primes


【解决方案1】:

你误解了python的操作符:

这里指出:https://docs.python.org/3/reference/expressions.html#binary-bitwise-operations

运算符 & 产生其参数的按位与,它必须是整数。

你应该使用的是“与”逻辑运算符。

您应该关心的另一件事是运算符优先级:https://docs.python.org/3/reference/expressions.html#operator-precedence

关于您的代码的逻辑,只要您发现新的质数,您就可以使用它们来更快地除法(执行模运算)(更少的步骤),因为每个数字都可以分解为质数乘积。我不给你举个例子,因为我不知道你想达到什么目标,如果你举个例子说明你需要什么,我可以做到。

【讨论】:

    猜你喜欢
    • 2016-03-05
    • 1970-01-01
    • 2010-11-01
    • 2018-02-11
    • 2023-03-29
    • 2015-02-25
    • 1970-01-01
    • 2018-11-27
    • 2013-10-01
    相关资源
    最近更新 更多