如何找到 a,b<N 对的数量,使得 GCD(a,b) = x?
How can I find the number of pairs a,b<N such that GCD(a,b) = x?
我正试图解决SPOJ问题PGCD,该问题询问最大公约数表中出现了多少素数。
我想到的第一个想法是首先通过筛选产生素数。
然后,对于每个素数p,看看有多少对(a、b)满足GCD(a,b)=p
,其中a和b小于给定的边界。
例如,有多少对小于(20,20)满足GCD(a,b)=7?
当然,如前所述,a和b是有界的。
那么,有可能逆转GCD吗?或者这个解决方案完全无效?
显然,GCD函数是不可逆的,因为,例如,
- GCD(10,15)==5
- GCD(5,15)==5
因此,如果你得到5,并试图猜测输入,这是不可能的。
我可能错过了一些东西,因为我不明白你在说什么关于边界,但我认为你有责任更好地解释这个问题。你到底有什么信息,你想计算什么信息?示例输入和输出将非常有用。还有校对和拼写检查。
相关文章:
- 查找 GCD:并非所有控制路径都返回值
- 形成一个斐波那契三角形,使得每个数字是上面左对角线或右对角线上两个数字的总和
- 为什么 std::gcd/lcm 返回 std::common_type_t<M, N> 而不是 auto?
- 求最小素数 x 和最大 m = power_of(x) 的函数,使得 n % m = 0 和 n % x = 0?
- 这是 std::gcd 中的错误吗?
- 在数组中查找对,使得 a+b%10 = k
- 在 C++ 中查找 2 个数字的 GCD
- 两个二项式系数模 10^9 + 7 的 GCD
- 分配/访问2d阵列,使得2d子块是连续的
- 找到所有整数 i, j, k >= 0 使得 i + j + k <= d?
- 如何使用while循环找到GCD?模数运算符是如何工作的
- 从安卓NDK15切换到17使得malloc和朋友找不到
- 构造大小为 N 的数组 A 和大小为 1 的数组 A,使得所有 A[i]*A[j] 的总和为最小值和正数。1 <= i < j <= N
- LCM 和 GCD 无法正常工作
- 派生类中的'using Base<T>::func()'使得派生类之外无法访问'func'
- cmakelists-使得找不到标头文件
- 在某些条件下最大化 GCD
- 求数组中三元组 (i, j, k) 的数量,使得 A[i] + A[j] = 2 * A[k]
- 一个数组可以划分的最大子数组,使得不同子数组中任意两个元素的 GCD 始终为 1?
- 如何找到 a,b<N 对的数量,使得 GCD(a,b) = x?