2024年华为OD机试真题-素数之积
华为OD机试真题-素数之积-2024年OD统一考试(D卷)
题目描述:
RSA加密算法在网络安全世界中无处不在,它利用了极大整数因数分解的困难度,数据越大,安全系数越高,给定一个32位正整数,请对其进行因数分解,找出是哪两个素数的乘积。
输入描述:
一个正整数num
0 < num <= 2147483647
输出描述:
如果成功找到,以单个空格分割,从小到大输出两个素数,分解失败,请输出-1 -1
示例1
输入:
15输出:
3 5说明:
因数分解后,找到两个素数3和5,使得3*5=15,按从小到大排列后,输出3 5
示例2
输入:
27输出:
-1 -1说明:
通过因数分解,找不到任何素数,使得他们的乘积为27,输出-1 -1
解题思路:
考察递归,使用循环判断数值范围解答。
JAVA解法:
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int num = scanner.nextInt(); scanner.close(); if (num <= 1) { System.out.println("-1 -1"); return; } int[] result = factorizeToPrimes(num); if (result[0] == -1) { System.out.println("-1 -1"); } else { System.out.println(result[0] + " " + result[1]); } } private static int[] factorizeToPrimes(int num) { for (int i = 2; i * i <= num; i++) { if (isPrime(i) && num
剩余60%内容,订阅专栏后可继续查看/也可单篇购买
华为OD机试题库2024年 文章被收录于专栏
2024年OD统一考试(D卷),最新最完整题库。 收录130+道真题,提供解题思路,Java/Python/C++三种答案源码。