1. 程式人生 > >數論基礎

數論基礎

p s chl 方程 實現 題意 標記 tro ext -a

Dirichlet理論

  題意

  給定 $a, b, L, U$ , 求 $an + b$ 中有多少個素數.

  $a > 0, b \ge 0, U \ge L \ge 0$ .

  $an + b \le {10} ^ {12} , U - L \ge 10 ^ 6$ .

  分析

  U - L 還是勉強可以接受的, 記布爾量 v[i] 表示 ai + b 是不是素數, 快速求出 v[] , 然後掃一遍.

  an + b 不是素數, 當且僅當 an + b = 1 , 或者是某個素數 p 的倍數, p <= 10 ^ 6 .

  枚舉所有 10 ^ 6 以內的所有素數 p , 解一次不定方程, 標記 v 中的位置.

  實現

  1. 註意特判 p | a 和 p | b 的相關情況.

  2. 註意特判 an + b = 1 的情況.

  3. 求不小於 x 的模 p 為 y 的最小數 n .

    設 z = x % p .

    n = x / p * p + z + (z < y ? p : 0) .

數論基礎