题目描述
RSA加密算法在网络安全世界中无处不在,它利用了极大整数因数分解的困难度,数据越大,安全系数越高,给定一个32位正整数,请对其进行因数分解,找出是哪两个素数的乘积。
输入描述
1. 一个正整数num
2. 0 < num <= 2147483647
输出描述
1. 如果成功找到,以单个空格分割,从小到大输出两个素数,分解失败,请输出-1 -1
示例一
输入
15
输出
3 5
代码实现
# coding:utf-8
# 素数之积
import mathclass Solution:def primeProdcut(self, n):s = int(math.sqrt(n))res = ''flag = Falsefor i in range(2, s + 1):if n % i == 0:if self.is_prime(i) and self.is_prime(n // i):flag = Trueif i < n // i:res = f"{i} {n // i}"else:res = f"{n // i} {n}"if flag:return reselse:return "-1 -1"def is_prime(self, n):if n < 2:return Falsefor i in range(2, int(math.sqrt(n)) + 1):if n % i == 0:return Falsereturn Trueif __name__ == '__main__':s = int(input("input:"))solution = Solution()print(solution.primeProdcut(s))