2016-09-21 56 views
-6

我想寫返回true,如果一個整數Square-Free的功能 - 這就是我已經試過:無法寫入一個無平方算法

def squarefree(n): 
    for i in range (2,n-1): 
     if n%(i**2)==0: 
      return False 
     else: 
      return True 

在數學中,方形自由或quadratfrei(來自德語)整數,是一個整數,不能被除1以外的其他完美平方整除。例如,10是平方自由的,但18不是,因爲18可以被9 = 32整除。最小的正數無方數是

+0

Sooo有什麼問題嗎?並且您的格式已關閉。 –

+0

你有什麼問題? – Harsha

+0

什麼是方形免費? –

回答

0

這裏的主要問題是你的ret每當你的陳述失敗時,將返回移出for循環。除此之外,你只需要快速到n的第四根就可以了。

import math 

def squarefree(n): 
    for i in range (2,math.ceil(math.sqrt(math.sqrt(n)))): 
     if n%(i**2)==0: 
      return False 
    return True 

只需檢查直到n的第4個根的素數就可以優化更多。