python超简单求因数的方法,无需复杂算法,不到10行代码就能搞定! |
您所在的位置:网站首页 › 799的因数有哪些 › python超简单求因数的方法,无需复杂算法,不到10行代码就能搞定! |
首先,什么是因数 因数是指整数a除以整数b(b≠0) 的商正好是整数而没有余数,我们就说b是a的因数。 从因数的定义上来看,因数的主要求法,就是除法,看结果是否为整数。 但是在python中,除法会返回为float,而float转int会被抹零,这就导致我们无法用除法的方式来求因数 type(10/2)既然,我们无法用除法的方式来求因数 换个思路 那么为什么不用乘法呢? 在python中,乘法运算的返回值,是int,这样问题不就完美解决了么~ type(5*2)首先,我们生成一个列表,用来遍历从1开始到我们要求数字的因数,以10为例,因为我们要取到10,并且从1开始,故列表这样写 list1 = [i for i in range(1, 11)]这样就能得到一个1-10的列表 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]接下来,我们需要一个反序的列表,也很简单 list2 = list1[::-1]这样就得到了一个反序的列表 [10, 9, 8, 7, 6, 5, 4, 3, 2, 1]我们还要生成一个空列表,用来保存我们得到的数据 list3 = []接下来,我们的目的是要让列表1的每一个数字,和列表2中的每一个数字相乘,然后判断所得值是否为10即可,是的话,就是我们需要的值,将所得的值保存到我们之前建立的空列表即可。 for a in list1: for b in list2: if a * b == 10: list3.append(a)利用循环嵌套,完美解决这一问题。 最后,完整运代码: list1 = [i for i in range(1, 11)] list2 = list1[::-1] list3 = [] for a in list1: for b in list2: if a * b == 10: list3.append(a) print(f'10的因数有:{list3}')输出结果: 10的因数有:[1, 2, 5, 10]8行代码,大功告成~ 接下来,我们简单的升级一下需求, 要求任意数字的因数,再加上计数。 想求任意数字的因数,只需要增加一个接口,输入就可以了。 在首行代码,增加输入接口: x = input('请输入你想求的数字:')然后,把x的值传给列表1的推导式 list1 = [i for i in range(1, int(x)+1)]注意:input的默认函数类型为str,故需要转换成int类型。 接下来的步骤都差不多了,只需要再增加一个计数器就好了。 x = input('请输入你想求的数字') list1 = [i for i in range(1, int(x)+1)] list2 = list1[::-1] list3 = [] count = 0 for a in list1: for b in list2: if a * b == int(x): list3.append(a) count += 1 print(f'{x}的因数有{list3},共有{count}个')测试: 请输入你想求的数字:45 45的因数有[1, 3, 5, 9, 15, 45],共有6个完美~ |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |