首页 > 解决方案 > Python Prime 生成器

问题描述

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

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。

标签: pythongeneratorprimes

解决方案


你误解了 python 的运算符:

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

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

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

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

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


推荐阅读