要使代码仅打印每个素数因子的一个副本,可以进行如下修改:
import math
def print_prime_factors(n):
# 寻找素数因子
while n % 2 == 0:
print(2)
n = n / 2
for i in range(3,int(math.sqrt(n))+1,2):
while n % i== 0:
print(i)
n = n / i
# 处理剩余的素数因子
if n > 2:
print(n)
# 测试代码
num = int(input("请输入一个正整数:"))
print("该数的素数因子为:")
print_prime_factors(num)
这段代码会首先判断给定的正整数 n
是否能被 2 整除,如果可以,则打印出 2,并将 n
更新为 n/2
。接着,使用一个循环从 3 开始,每次增加 2,判断 n
是否能被当前的数整除,如果可以,则打印出该数,并将 n
更新为 n
除以该数。循环继续,直到 n
不再能被整除。最后,如果 n
大于 2,则说明 n
本身就是一个素数,打印出 n
。
这段代码的优点是简洁明了,能够正确地找出给定正整数的所有素数因子,并打印出来。
适用场景:
推荐的腾讯云相关产品和产品介绍链接地址:
没有搜到相关的沙龙
领取专属 10元无门槛券
手把手带您无忧上云