计算具有不同素数因子计数的数对(1 到 N 范围内的数字)10 Sept 2024 | 4 分钟阅读 给定两个数组 A[] 和 B[],分别包含 N 个和 M 个整数。我们的任务是找出配对 (A[i], B[j]) 的数量,这些配对能够确保它们的**不同素数因子数量的乘积为偶数**。 示例 1 输入 int arr_A[] = {1, 7} int arr_B[] = {5, 6} int N = 2 int M = 2 输出 具有不同素数因子数量偶数乘积的数组对的数量是 1。 解释 对于给定的数组 arr_A[] = {1, 7} 和 arr_B[] = {5, 6};通过用其独立素数因子的数量替换数组中的每个元素,数组被修改为 arr_A[] = {0, 1} 和 arr_B[] = {1, 2}。因此,{7, 6} 是具有偶数乘积的配对。因此,形成的配对总数为 1。 示例 2 输入 int arr_A[] = {1, 2, 3} int arr_B[] = {4, 5, 6} int N = 3 int M = 3 输出 具有不同素数因子数量偶数乘积的数组对的数量是 2。 解释 对于给定的数组 arr_A[] = {1, 2, 3} 和 arr_B[] = {4, 5, 6};通过用其独立素数因子的数量替换数组中的每个元素,数组被修改为 arr_A[] = {0, 1, 1} 和 arr_B[] = {1, 1, 2}。因此,{{2, 6}, {3, 6}} 是具有偶数乘积的总配对。因此,形成的配对总数为 2。 方法:使用埃拉托斯特尼筛法该方法使用埃拉托斯特尼筛法有效地计算独立的素数因子。然后,它计算偶数和奇数素数因子的数量,以找出具有素数因子偶数乘积的配对数量。通过利用以下属性,可以使此策略更加有效:两个数字的乘积具有所有数字(直到两个数组中的最大元素)的唯一素数因子数量的优化计算。 奇数 * 奇数 = 奇数 偶数 * 奇数 = 偶数 奇数 * 偶数 = 偶数 偶数 * 偶数 = 偶数 算法 步骤 1:首先,找出 MAX 以下每个数字的独立素数因子,然后将结果存储在名为 countDistinct 的 vector<int> 中。 步骤 2:初始化两个变量,如 evenCnt 和 oddCnt,分别用于保存 arr_B[] 中数组元素的不同素数因子的偶数和奇数数量。 步骤 3:遍历 arr_B[] 数组。 步骤 3.1:如果 count[arr_B[i]] = 0,则继续下一步。如果 count[arr_B[i]] 为奇数,则将 oddCnt 加一。 步骤 3.2:否则,将 evenCnt 加一。 步骤 4:将变量 evenPairs 的值初始化为零。 步骤 5:如果 count[arr_A[i]] 为奇数,则遍历 arr_A[] 数组并将 evenPairs 增加 evenCnt。 步骤 6:否则,将 evenCnt 乘以 oddCnt 以增加 evenPairs。 步骤 7:显示 evenPairs 的值。 实施文件名:CountPairsWithProducts.java 输出 The number of pairs from an array that form even product with distinct prime factors is 1 复杂度分析 上述代码的时间复杂度为 O(N * log(N)),空间复杂度为 O(N),其中 N 表示数组的长度。 |
?在 Java 编程的世界里,流已成为一种强大而通用的概念,用于以简洁高效的方式处理数据集合。流在 Java 8 中引入,它提供了一种函数式的方法来处理数据,使开发人员能够对...执行复杂的数据操作。
7 分钟阅读
valueOf() 方法是一个静态方法,它返回保持传递参数值的相应 Integer 对象。参数可以是基本数据类型、String 等。Java 的 valueOf() 函数是映射不同数据类型(如字符串和...)的重要工具。
阅读 6 分钟
统计道路上通过的汽车数量问题只是众多典型算法问题之一,其实际目标是确定在同一条道路上朝相反方向行驶的汽车的有效对的总数。更具体地说,...
5 分钟阅读
这是一个非常有趣的问题,经常在 Google、Amazon、TCS、Accenture、Adobe、Apple、Infosys 等顶级 IT 公司的面试中出现。通过解决这个问题,可以考察应聘者的逻辑能力、批判性思维和解决问题的能力。因此,在本节中,...
5 分钟阅读
java.util.function 包在 Java 8 中引入,其中包含 DoubleFunction 接口,用于支持 Java 中的函数式编程。它代表一个在接收双精度输入后生成 R 类型结果的函数。只接受一个泛型...
阅读 3 分钟
在 Java 中,管理员和用户需要网络监控工具来对网络系统执行基本操作。网络监控工具有助于监控和分析网络流量,确保最佳性能和安全性。要使用 Java 中的内置库(如 java.net)创建一个简单的网络监控工具...
阅读 3 分钟
在 Java 中,Vector 类是 Java 集合框架的一部分,它提供了动态数组的实现。虽然随着 ArrayList 等更有效替代品的出现,Vector 的使用已不如以前普遍,但在某些情况下,Vector 仍然可以...
阅读 4 分钟
A 是声明新 Java 类的最常用关键字。类是包含代码块的容器,代码块包括字段、方法、构造函数等。类是创建对象的模板或蓝图。它...
阅读 2 分钟
给定一个数组arr[],任务是找到数组中最长序列的长度,该序列形成算术级数。示例1:输入:int arr[] = {30, 40, 50, 60, 70, 80, 90, 100, 110, 120, 130, 140}; 输出:12 说明:……
7 分钟阅读
Java 编程中有像 if-else 这样的条件语句来表示程序中的不同条件。但是,当条件数量更多时,使用 if-else 语句并不合适。为了解决这个问题,Java 编程语言支持 switch-case 语句...
阅读 6 分钟
我们请求您订阅我们的新闻通讯以获取最新更新。
我们提供所有技术(如 Java 教程、Android、Java 框架)的教程和面试问题
G-13, 2nd Floor, Sec-3, Noida, UP, 201301, India