素因子程序

问题描述:

问题 这是我正在尝试解决的问题。素因子程序

13195的主要因素是5,7,13,29。什么是数字600851475143的最大素因子?

def prime_calc(): 
    num = raw_input("What is the number you want the primes for?") 
    prim_num = [] 
    x = 2 
    while num/x > 1: 
     new_num = num/x 
     if num % x == 0: 
      return prim_num.append(x) 
     elif num % x != 0: 
      new_num = num/x += 1 
      return prim_num.append(x) 
     else: 
      break 

我不断收到从下往上第四行,这并不像我的“+ =”操作符启动一个无效的语法错误

+0

'NUM/X + = 1'这不就是两个变量返回原始的?在这里的情景中,+ +会对它起作用吗?为什么不只是'num/x + 1'? – Compass 2014-09-19 20:30:18

+2

你的代码有多个缺陷。首先,你是用'int'类型来划分'str'类型。 – 2014-09-19 20:41:56

这条线:

new_num = num/x += 1 

应分成两行:

x += 1 
new_num = num/x 

该声明012 python中的不返回任何东西,所以你不能将它用作表达式的一部分。

同样的两个实例:

return prim_num.append(x) 

也是不行的,因为声明:prime_num.append(x)不返回任何东西。 你需要打入这个:

prime_num.append(x) 
return prime_num 

计划寻找大素因子

num=int(input("Please enter number to calculate prime factor")) 

k=0 

item=[] 

if(num%2==0): 

    prime=2 

    item.insert(k,prime) 

    k=k+1 

j=3 

flag=int(num/2) 

while(j<flag and num>2): 

    if num%j==0: 

    prime=j 
    item.insert(k,prime) 
    k=k+1 
    num=num/j 
    j=j+2 
    else: 
    j=j+2 

if k==0: 

    print("sorry no prime factor for this no") 

else: 

    print("Please find the largest prime factor below") 
    print(item.pop()) 

num=int(input("Please enter number to calculate prime factor"))  
k=0  
item=[]  
if(num%2==0):  
    prime=2  
    item.insert(k,prime)  
    k=k+1  

j=3  
flag=int(num/2)  
while(j<flag and num>2):  
    if num%j==0:  
    prime=j 
    item.insert(k,prime) 
    k=k+1 
    num=num/j 
    j=j+2 
    else: 
    j=j+2 

if k==0:  
    print("sorry no prime factor for this number")  
else:  
    print("Please find the largest prime factor below") 
    print(item.pop())