寻找素因子逻辑错误python

时间:2017-12-10 16:09:33

标签: python primes

不确定为什么试图找到这样的素数因素并不起作用:

primes= [2,3,5]
maximum = int(input("Highest number checked: "))
x = 2
prime = False
while x < maximum:
    y = len(primes)
    for n in range(2,y):
        if x % int(primes[n]) == 0:
            prime = True
        else:
            prime = False
            break
    if prime == True:
        primes.append(x)
    x = x+1

print(primes)

输入30张照片2,3,5,5,10,20

2 个答案:

答案 0 :(得分:0)

在此行中if x % int(prime[n]) == 0:prime更改为primes

答案 1 :(得分:0)

  

不确定为什么试图找到这样的素数因素并不起作用

它没有用,因为你没有写一个(破碎的)素因子发现程序,你写了一个(破碎的)主要发现程序。如果我们修复并清理它,这应该更明显一点:

primes = [2, 3, 5]

maximum = int(input("Highest number checked: "))

x = 2

while x <= maximum:
    is_prime = True

    for prime in primes:
        if prime * prime > x:
            break

        if x % prime == 0:
            is_prime = False
            break

    if is_prime:
        primes.append(x)

    x = x + 1

print(primes)

<强> USAGE

% python3 test.py
Highest number checked: 100
[2, 3, 5, 2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97]
%

这可以用作素因子发现程序的一部分,但它本身并不充足。你需要处理N个素数列表的某个子集,看看哪个素数是N的因子。代码不比现在多。