1. 题目
RSA加密算法在网络安全世界中无处不在,它利用了极大整数因数分解的困难度,数据越大,安全系数越高,给定一个32位正整数,请对其进行因数分解,找出是哪两个素数的乘积。
- 输入描述:
1. 一个正整数num
2. 0 < num <= 2147483647- 输出描述:
1. 如果成功找到,以单个空格分割,从小到大输出两个素数,分解失败,请输出-1 -1
示例1
输入
15
输出
35
2. 解题思路
- 首先要明确素数的定义:只能被1和自身整除的大于1的自然数,被称为素数,也叫质数,因此首先可以对边缘值1进行判断
- 如果一个数
num
是素数,那么在[2, sqrt(num)]
之间的所有自然数都不能为num整除。因此可以对循环的范围进行缩小 - 直接对
num / i
以及num % i
进行判断可以直接找到第二个素数
function rebuild (