不支持的操作数类型

不支持的操作数类型

我正在尝试制作一个程序来查找数字是否为质数。

档案2:

class Number():
    def __init__(self, x):
        self.x = float(x)
    def is_prime(x):
        x = x
        Div = 2
        while ((x / 2) > Div):
            if(x == 2):
                return True
            elif(x == 3):
                return True
            else:
                while((x / 2) > Div):
                    if(x%Div == 0):
                        return False
                    elif(Div >= (x / 2)):
                        return True
                    else:
                        Div = Div + 1


文件1:

from File2 import *

N = Number(10)

print N.is_prime()


当我运行它时,我得到以下信息:

Traceback (most recent call last):
File "File 1", line 5, in <module>
print N.is_prime()
File "File 2", line 19, in is_prime
while ((x / 2) > Div):
TypeError: unsupported operand type(s) for /: 'instance' and 'int'


有人知道怎么修这个东西吗?

最佳答案

@Daniel Roseman已使用您的类定义解决了语法问题。这是对您选择的算法本身的更正,按原样返回None(如果return是素数,则返回不带显式x语句的情况下返回的函数),并将4标识为素数。嵌套的while循环不是必需的。尝试:

class Number():
    def __init__(self, x):
        self.x = float(x)
    def is_prime(self):
        x = self.x
        if(x == 2):
            return True
        elif(x == 3):
            return True
        else:
            Div = 2
            while((x / 2) >= Div):
                if(x%Div == 0):
                    return False
                else:
                    Div = Div + 1
        return True

for i in range(2,36):
    N = Number(i)
    print i, N.is_prime()

关于python -/不支持的操作数类型:'instance'和'int',我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28374797/

10-12 02:52