查找除数的程序

2024-05-19 08:36:20 发布

您现在位置:Python中文网/ 问答频道 /正文

我一直在做我自己的小程序,为输入的数字寻找除数。你知道吗

它判断一个数是否可以被另一个数除的方法是结果是否是整数。如果它是一个浮点数,它应该是负数。你知道吗

到目前为止我得到的是:

# Divider

Number = input("> ")

divider = 1

while True:
    Number = int(Number)
    divider = int(divider)

    result = 0

    result = int(result)

    result = Number/divider

    if isinstance(result, int):    
        print("{} Y".format(divider))

    else:
        print("{} N".format(divider))

    divider = divider + 1

    if divider == Number + 1:
        break

问题是,当我运行程序并输入一个像“10”这样的数字时,它应该有一个以上的除数(1,2,5,10),结果完全是负数:

> 10
1 N
2 N
3 N
4 N
5 N
6 N
7 N
8 N
9 N
10 N
>>>

我不知道我做错了什么。你知道吗


Tags: 方法程序formatnumberif数字整数result
3条回答

除法运算符/在python3中总是产生一个浮点数,因此结果永远不会是整数的实例。你知道吗

您应该改为使用模运算符来测试余数是否为0:

if number % divider == 0:
    print("{} Y".format(divider))
else:
    print("{} N".format(divider))

首先我要清理你的代码:

Number = 15

divider = 1

while True:

    if divider == Number + 1:
        break

    Number = int(Number)
    divider = int(divider)

    result = Number/divider

    if isinstance(result, int):
        print("{} Y".format(divider))

    else:
        print("{} N".format(divider))

    divider = divider + 1

现在,它们都以负回报是什么?仅仅因为/除法返回一个float(即结果是一个float)。正确的解决方案是什么?使用%模检查余数是否为0。你知道吗

Number = 15

divider = 1

while True:

    if divider == Number + 1:
        break

    Number = int(Number)
    divider = int(divider)

    result = Number%divider

    if result == 0:
        print("{} Y".format(divider))

    else:
        print("{} N".format(divider))

    divider = divider + 1

输出:

1 Y
2 N
3 Y
4 N
5 Y
6 N
7 N
8 N
9 N
10 N
11 N
12 N
13 N
14 N
15 Y

我会用模数来解。如果余数是0,那么它是可除的,否则它不是。不需要任何intfloat检查。你知道吗

num = input("> ")
#Assuming the num is an integer
divisors = [] #List of divisors
for i in range(1,num):
  if num%i == 0:
    divisors.append(i)

输出:

>>[1, 2, 5]

相关问题 更多 >

    热门问题