【问题标题】:possible solutions for the given equation给定方程的可能解
【发布时间】:2020-03-31 06:47:17
【问题描述】:

给定 X,p,a,b。我们需要找出有多少正整数 n ( 1

na^n ≡ b(mod p)

Constraints:  
2 <= p <= 10^6,  
1 <= a,b< p,  
1 <= X <= 10^12  

我不知道如何解决这个问题,任何方法或证据都会非常有帮助。

谢谢。

【问题讨论】:

  • 这个问题似乎与当前形式的编程没有任何关系。您能否以使其与编程相关的方式指定您需要的内容?现在它似乎更适合math.stackexchange.com
  • 您的意思是 10^6 和 10^12 而不是 106 和 1012?正如所写,数字非常小。
  • @Lomtrur 我认为这是一个编程问题。据我所知,没有直接的数学解决方案,所以问题在于找到一种有效的计算方法。计算数学问题不是纯粹的编程问题,也不是纯粹的数学问题,我认为这些问题可以去这里或 math.stackexhange 上。如果不解决它们,就很难知道问题是更多的数学还是计算。

标签: algorithm math discrete-mathematics modular-arithmetic


【解决方案1】:

这假设p 是素数。

对于从 1 向上的每个 i,计算 a^i。在某个时刻(称为q),您将到达 1,然后您可以停止。然后找到所有n &lt;= X 使得na^n = b (mod p)a^n = a^i (mod p) 是计算n = b*(a^i)^-1 (mod p)n=i (mod q) 的所有解的问题,这可以使用中国剩余定理来完成。

这个过程只枚举所有解决方案一次,如果你小心的话,它会在 O(p) 时间内运行。 (如果每次迭代都从头开始计算 a^i (mod p)(a^i)^-1 (mod p),则需要注意避免 O(p log p)。

【讨论】:

  • 只是一些注意事项:仅当您假设 p 是质数且 a 不是 10 mod p 时,这才是正确的。这个问题看起来像p 是质数,但它没有写在那里。
  • 不幸的是,a^i 对从 1 到 p-1 的每个值仅取一次的说法只有在 a 是原始根 mod p 时才成立。不是每个 a 都是原根。
  • @PresidentJamesMoveonPolk 你是对的,但它很容易修复。我编辑了答案。
  • @PaulHankin:是的,每个元素都有一个除以 p-1 的顺序 (q)。
猜你喜欢
  • 2016-08-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多