题目:
在这里插入图片描述

考察内容:
循环遍历判断素数(取余,2-int(n/2)+1);
循环遍历判断是否被素数整除,且另一个数也是素数(2, sqrt(n))。
代码:

"""
题目分析:
因数分解

输入:一个int, 0-2147483647
输出:两个质因素;或者-1, -1

思路:
递归,循环判断,
数学转化
"""
import math
num = int(input())


def is_prime(n):
    """
    判断一个数是否为素数
    :param n:
    :return:
    """
    for i in range(2, int(n/2)+1):
        if n % i == 0:
            return False
    return True


def prime_factors(num):
    """
    :param num:
    :return:
    """
    for factor in range(2, math.ceil(num**0.5)):
        # 判断是否为素数
        if is_prime(factor):
            # 判断是否能整除
            if num % factor == 0:
                other_factor = num // factor
                # 检查另一个数是否为素数
                if is_prime(other_factor):
                    return factor, other_factor
    return -1, -1


print(" ".join(map(str, prime_factors(num))))

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐