我正在编写一个函数来确定给定的数字是否“丑陋”。如果唯一的主要因素是2,3和5(它可能少于全部3但没有其他因素),这很难看。
我收到错误,说:“第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 :(得分:2)
将getPrimeFactors
用作self.getPrimeFactors(num)
,因为它已被定义为班级Solution
内的方法:
primeFactors = self.getPrimeFactors(num)
isPrime
:
if self.isPrime(i) and num % i == 0:
其他问题:
range
参数应为int
而不是float
,因此请使用int
代替math.floor
:
range(2, int(math.sqrt(num)))
在python中使用True
而不是true
return True