python超简单求因数的方法,无需复杂算法,不到10行代码就能搞定!

您所在的位置:网站首页 799的因数有哪些 python超简单求因数的方法,无需复杂算法,不到10行代码就能搞定!

python超简单求因数的方法,无需复杂算法,不到10行代码就能搞定!

2024-01-19 09:53| 来源: 网络整理| 查看: 265

首先,什么是因数

因数是指整数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