2015-08-21 71 views
0

我正在写一个函数,它将确定给定的数字是否“丑陋”。如果它唯一的主要因素是2,3和5(它可以少于全部3个,但没有其他3个),那就很难看。基本Python:给我一个全局名称错误的函数

我得到一个错误,说:“第22行:NameError:全局名称'getPrimeFactors'未定义”。

我在做什么不正确?

import math 

class Solution(object): 
    def isPrime(self, num): 
     for i in range(2, math.floor(math.sqrt(num))): 
      if num % i == 0: 
       return false 
     return true 

    def getPrimeFactors(self, num): 
     primeFactors = [] 
     for i in range(2, math.floor(math.sqrt(num))): 
      if isPrime(i) and num % i == 0: 
       primeFactors.append(i) 
     return primeFactors 

    def isUgly(self, num): 
     """ 
     :type num: int 
     :rtype: bool 
     """ 
     primeFactors = getPrimeFactors(num) 
     for factor in primeFactors: 
      if factor != 2 and factor != 3 and factor != 5: 
       return false 
     return true 

谢谢!

+0

你从C++来? –

回答

2

使用getPrimeFactorsself.getPrimeFactors(num)因为它定义为一个方法的类Solution内:

primeFactors = self.getPrimeFactors(num) 

同为isPrime

if self.isPrime(i) and num % i == 0: 

其他问题:

  • range参数应该是intfloat,所以使用int,而不是math.floor:Python中

    range(2, int(math.sqrt(num))) 
    
  • 使用Truetrue

    return True 
    
+1

快速而真实! – dsgdfg

相关问题