如何找到对a,b的对数

时间:2012-09-05 18:23:52

标签: c++ math primes greatest-common-divisor

我正在尝试解决the SPOJ problem PGCD,它会询问有多少素数出现在最大公约数的表中。

我想到的第一个想法是先通过筛分产生素数。

然后,对于每个主要 p ,查看有多少对( a b ),其中 a 并且 b 小于给定的边界,满足GCD(a,b)=p

例如,有多少对(20,20)满足GCD(a,b)= 7?

当然,如上所述, a b 是有界限的。

那么可以扭转GCD吗?或者这个解决方案完全无效?

1 个答案:

答案 0 :(得分:2)

显然,GCD功能不可逆/可逆,因为,例如,

  • GCD(10,15)== 5
  • GCD(5,15)== 5

因此,如果给你5并尝试猜测输入,那就不可能了。

我可能在这里遗漏了一些东西,因为我不明白你对这个边界的看法,但我认为你有责任更好地解释这个问题。究竟你有什么信息,你想要计算什么信息?示例输入和输出将非常有用。此外,校对和拼写检查。