检查数字的素数因子

时间:2016-10-22 09:52:44

标签: python-2.7

这里我遇到了检查素数因子的问题

# using python2.7.10
from math import sqrt
def isprime(x):
    if x == 1:
        return False
    k = int(sqrt(x))
    for j in range(2,k+1):
        if x%j == 0:
            return False
        return True
num = input("please input a number:")
for i in range(2, num):
    if i!= num and num % i == 0:
        print i,

如果输入数字45,则打印出3,5,9,15。然而,3是因子9和15,5是15的因子。我希望结果是3,5。 如何更改代码以实现目标?

5 个答案:

答案 0 :(得分:0)

你只需要将返回True 移出循环,所以你检查2-k的所有数字:

from math import sqrt

def isprime(x):
    if x == 1:
        return False
    k = int(sqrt(x))
    for j in range(2,k+1):
        if x % j == 0:
            return False
    return True # if you get here, you have checked all 2-k

num = int(raw_input("please input a number:"))
for i in range(2, num):
     if isprime(i) and num % i == 0:
        print(i,)

return True只要if x % j == 0有剩余时间,num = int(raw_input())您就不会对所有数字进行x检查。此外,不使用输入来获取用户输入,使用 raw_input 转换为int app.component.ts

更有效的方式来做你想要的是here

答案 1 :(得分:0)

试试这个,它会帮助你获得你的答案:

def isprime(x):
    if x >= 2:       
        for k in range(2,x):
            if x%k==0:
                return False
        return True
    else:
        return False 


num = input("please input a number:")
factor=[]
prime_factor=[]
for i in range(2, num):
    if num % i == 0:
        factor.append(i)

for k in factor:    
    if isprime(k):        
        prime_factor.append(k)

print 'Factors',factor
print 'Prime Factors',prime_factor

输出 -

please input a number:45
Factors [3, 5, 9, 15]
Prime Factors [3, 5]

答案 2 :(得分:0)

[['a', 'c', 'b'], ['F', 'P', 'Z', 'W'], ['R', 'X', 'N']]

答案 3 :(得分:-1)

这是检查素数的代码。您可以根据需要进行修改

XX

答案 4 :(得分:-1)

只是稍微建立一下vikram singh chandel的答案,这是一个更短的解决方案,最终避免了双循环。我们只需要附加素数因子:

编辑:直接输入素数的次要更改。

def isprime(x):

    if x < 2:
        return False

    for k in range(2, x):
        if x % k == 0:
            return False

    return True


num = input("please input a number:")

factors = []
for i in range(1, num + 1):
    if num % i == 0 and isprime(i):
        factors.append(i)

print 'Factors:', factors