"""练习 15 进阶版:用 all() 和 math.isqrt() 判断质数。""" from math import isqrt n = int(input()) if n < 1: raise ValueError("请输入正整数") is_prime = n > 1 and all(n % divisor != 0 for divisor in range(2, isqrt(n) + 1)) print("prime:", "yes" if is_prime else "no") remaining = n prime_factors = [] divisor = 2 while divisor * divisor <= remaining: if remaining % divisor == 0: prime_factors.append(divisor) while remaining % divisor == 0: remaining //= divisor divisor += 1 if remaining > 1: prime_factors.append(remaining) print("distinct prime factors:", *prime_factors if prime_factors else ["none"])