python枚举法

文章目录

  • 枚举法
    • 1、枚举法求最大公因数
    • 2、判断水仙花数

枚举法

对要解决的问题注意列举出所有的情况,逐步判断那些是符合要求的条件,从而得到问题的解

1、枚举法求最大公因数

思路1:先求n1的公因数,再求n2的公因数,再求公因数,取max

def common_factor(n1,n2):
	ls1,ls2 = [], []
	for i in range(n1):   # 求n1的所有因数
		if n1%i == 0:
			ls1.append(i)
	for j in range(n2):     # 求n2的所有因数
		id n2%j ==0:
			ls2.append(j)
	ls3 = []
	for i in ls1:
		if i in ls2:
			ls3.append(i)
	return max(ls3)

思路2:最大公因数不会超过n1,n2的最小值。倒着取即为最大

def common_factor(n1,n2):
	for i in range(min(n1,n2),0,-1):
		if n1&i == 0 and n2%i == 0:
			return i

2、判断水仙花数

水仙花数(Narcissistic number)也被称为超完全数字不变数(pluperfect digital invariant, PPDI)。是指一个 3 位数,它的每个位上的数字的 3次幂之和等于它本身。例如:13+53+ 33 = 153。
求三位数的所有水仙花数

def is_narcrissistic(n):
res = []
for i in range(100,1000):
	t1 = i%100  # 个位
	t2 = i//10%10
	t3 = i//100
	if t1**3 + t2**3 + t3**3 == n:
	res.append(n)
return res

你可能感兴趣的:(算法,python,数据结构)