在范围 [L, R] 内所有可能的互质的不同元素对?


这里我们将看到如何计算范围内互质对的数量,其中一个数字不会出现在多个对中。

在讨论逻辑之前,让我们看看什么是互质数?互质数是指只有1这个正整数因子的数字。换句话说,我们可以说这两个数的最大公约数是1。

这里我们提供上下限。如果上下限是1和6,那么有三对:(1, 2)、(3, 4)和(5, 6)

解决这个问题的方法是这样的:如果数字是连续的,它们总是互质的。所以计数将是 (R – L + 1)/2。如果 (R – L + 1) 是奇数,那么将有一个数字剩下,不会放在任何一对中;如果是偶数,那么所有数字都会成对。

算法

countCoPrimePairs(L, R)

Begin
   return (R – L + 1)/2
End

示例

#include <iostream>
using namespace std;
int countCoPrimePairs(int L, int R) {
   return (R - L + 1)/2;
}
main() {
   int l = 1, r = 6;
   cout << "Number of co-prime pairs: " << countCoPrimePairs(l, r);
}

输出

Number of co-prime pairs: 3

更新于:2019年7月31日

212 次查看

开启您的职业生涯

完成课程获得认证

开始学习
广告