在范围 [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
广告