题目描述
RSA加密算法在网络安全世界中无处不在,它利用了极大整数因数分解的困难度,数据越大,安全系数越高,给定一个32位正整数,请对其进行因数分解,找出是哪两个素数的乘积。
输入描述
1. 一个正整数num
2. 0 < num <= 2147483647文章来源:https://www.toymoban.com/news/detail-674116.html
输出描述
1. 如果成功找到,以单个空格分割,从小到大输出两个素数,分解失败,请输出-1 -1文章来源地址https://www.toymoban.com/news/detail-674116.html
示例一
输入
15
输出
3 5
代码实现
# coding:utf-8
# 素数之积
import math
class Solution:
def primeProdcut(self, n):
s = int(math.sqrt(n))
res = ''
flag = False
for i in range(2, s + 1):
if n % i == 0:
if self.is_prime(i) and self.is_prime(n // i):
flag = True
if i < n // i:
res = f"{i} {n // i}"
else:
res = f"{n // i} {n}"
if flag:
return res
else:
return "-1 -1"
def is_prime(self, n):
if n < 2:
return False
for i in range(2, int(math.sqrt(n)) + 1):
if n % i == 0:
return False
return True
if __name__ == '__main__':
s = int(input("input:"))
solution = Solution()
print(solution.primeProdcut(s))
到了这里,关于华为OD-素数之积的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!