我正在构建代码以查找数字中最大的素数。我已经写了代码。请指出需要对代码进行的更改。感谢您的帮助!
我尝试删除类声明,仅声明代码中提到的两个函数,但是NameError: 'isPrime' used before declaration
仍然存在。
class Soln(object):
def isPrime(self,num):
c=0
if (num<2):
return False
else:
for x in range(1,num):
if (num%x == 0):
c+=1
if (c>1):
return False
else:
return True
def nLargest(self,n):
for x in range(n,0,-1):
if(isPrime(x)):
print ("\nLargest Prime Factor is"+str(x))
exit()
a=Soln()
a.nLargest(12)
输出应为3,但给出
NameError:声明之前使用了isPrime。
答案 0 :(得分:2)
您没有定义“全局”方法isPrime
。您可能要使用Soln
类中的那个。为此,您可以编写:
self.isPrime(x)
(从另一方法Soln
调用时)
或
a.isPrime(x)
(从该对象外部调用Soln对象a
时)
或将方法设为静态并使用:
Soln.isPrime(x)
答案 1 :(得分:0)
使用rhis代码:
def nLargest(self,n):
for x in range(n,0,-1):
if(self.isPrime(x)):
print ("\nLargest Prime Factor is"+str(x))
exit()