Python 每日一题:锻炼Python语法的运用,思维逻辑的锻炼,算法能力的培养。
题目:
输入一个数,将其分解质因数。
如:12 = 2 × 2 × 3 13 = 13 x 1
分析:
需分解数记为n,循环去查找区间 [2, n] 之间数 n 的因数,如果存在因数 i,数n需要变为 n = n // i ,如果 n 除到了 1,则表示 n 已经没有其他因数,则打印其此次循环的因数 i,否则再继续 利用除以一个因数后的n 再次去除此次循环的因数 i ,如果为0,则表示 n 的因数还是该因数 i,若无此因数 i 则结束循环,循环再次从 [2, n] 之间获取一个因数数 i,判断是否存在因数。由于素数是没有除了自身与1外,没有其他的因数,则设置一个变量flag,用于记录是否有因数,如果没有因数,则打印 素数 = 素数 × 1。
程序实现:
def factorization_prime_factor(n):
if n > 1:
print(n, '=', end=' ')
for i in range(2, n + 1):
flag = 0
while n % i == 0:
n //= i
if n == 1:
print(i, end='')
else:
print('%d × ' % i, end='')
flag = 1
if flag == 1:
print(' × 1', end='')
else:
print(f'{n} 无法进行质因数分解')
factorization_prime_factor(12)
【结语】以上整个程序的实现逻辑,还存在很多不全面的地方,欢迎各位大佬指点;如果觉得笔者不易,请给予点赞,给予我记录更多文章的动力!!