2014-09-19 54 views
-4

問題 這是我正在嘗試解決的問題。素因子程序

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

回答

1

這條線:

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 
-1

計劃尋找大素因子

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()) 
0
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())