数论基础
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数论基础相关的知识,希望对你有一定的参考价值。
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) .
以上是关于数论基础的主要内容,如果未能解决你的问题,请参考以下文章