码迷,mamicode.com
首页 > 其他好文 > 详细

数论基础

时间:2017-09-25 16:42:17      阅读:160      评论:0      收藏:0      [点我收藏+]

标签:快速   color   数论   dir   text   情况   理论   hle   枚举   

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) .

数论基础

标签:快速   color   数论   dir   text   情况   理论   hle   枚举   

原文地址:http://www.cnblogs.com/Sdchr/p/7592545.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!