华为OD机试真题-素数之积-2023年OD统一考试(C卷)--Python-开源
循环遍历判断是否被素数整除,且另一个数也是素数(2, sqrt(n))。循环遍历判断素数(取余,2-int(n/2)+1);
·
题目:
考察内容:
循环遍历判断素数(取余,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))))
更多推荐


所有评论(0)