一、题目描述
RSA加密算法在网络安全世界中无处不在,它利用了极大整数因数分解的困难度,数据越大,安全系数越高。
给定一个32位正整数,请对其进行因数分解,找出是哪两个素数的乘积。
二、输入描述
一个正整数num
0 < num <= 2147483647
三、输出描述
如果成功找到,以单个空格分割,从小到大输出两个素数,分解失败,请输出-1 -1。
四、解题思路
- 读取输入的正整数num;
- 计算num的平方根n,取整数部分作为循环的终止条件;
- 初始化一个空字符串s用于存储找到的素数因子;
- 初始化一个布尔变量flag为false,用于标记是否找到满足条件的素数因子;
- 从2开始循环遍历到n:
- 如果num能被当前的循环变量i整除,说明i是num的一个因子。
- 检查i和num/i是否都是素数,如果是素数,则找到满足条件的素数因子。
- 更新flag为true,同时根据i和num/i的大小关系将它们拼接到字符串s中。
- 根据flag的值判断是否成功找