查找数字除数的程序

时间:2018-10-09 11:40:45

标签: python python-3.x

我一直在制作自己的小程序,该程序可以找到输入数字的除数。

确定数字是否可以除以另一个数字的方法是结果是否为整数。如果它是浮动的,则应该为负。

这是到目前为止我得到的:

# 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
>>>

我想知道我在做错什么。

6 个答案:

答案 0 :(得分:3)

首先,我要清理您的代码:

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

现在,它们全部返回负值是什么?仅仅因为/除法返回浮点数(即结果是浮点数)。什么是正确的解决方案?使用%取模,以检查余数是否为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

答案 1 :(得分:3)

除法运算符/在Python 3中始终导致浮点数,因此结果永远不会是整数的实例。

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

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

答案 2 :(得分:2)

我将使用模数来解决它。如果余数为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]

答案 3 :(得分:1)

for divisor in range(1, number//2+1):
  print("{} {}".format(divisor, "Y" if number % divisor == 0 else "N"))

一些其他建议:

  • 请勿将大写字母用作变量名。最好用大写字母(以及常量的全大写字母)命名类。
  • 走到number // 2(整数除法)就足够了,因为在number // 2number之间不再有除数。
  • 干燥-不要重复自己(编​​程中非常普遍的规则):使用a if b else c运算符可避免重复print

答案 4 :(得分:0)

您如何在下面使用模运算呢?

result = Number%divider

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

答案 5 :(得分:0)

num = int(input('Enter a number : '))
div = 1
count = 0
while True:
    if(div == num+1):
        break
    result = num%div
    if result == 0:
        print('{} -- yes'.format(div))
        count+=1
    else:
        print('{} -- No'.format(div))
    div+=1
print('Total number of divisor : ', count)