• 素数(超详细!!!)


    整数惟一分解定理

    素数筛法

    给定n,求出1~n之间所有的质数。

    一、Eratosthenes筛法

    (☒此处本应有一幅动图,然鹅我并不知道该如何显示动图(。-ω-)-ω-)-ω-)

    Eratosthenes筛法思想

    二、欧拉筛法(线性筛)

    埃氏筛法中以n=30为例,30这个数被筛了3次,分别是:

    2*15(p=2)

    3*10(p=3)

    5*6(p=5)

    枚举 2~n 中的每一个数 i:

    如果 i 是素数则保存到素数表中;

    利用 i 和素数表中的素数 prime[j] 去筛除 i*prime[j] ,为了确保i*prime[j] 只被素数 prime[j] 筛除过这一次,要确保 prime[j] 是i*prime[j] 中最小的素因子,即 i 中不能有比 prime[j] 还要小的素因子

    写法一:(仅用于判断)

    写法二:(可求出每个数的最小质因子)

    素数筛法优化素因数分解

    只要在判定素数时记录下每个数值的最小素因数即可。


     一道肥肠简单的模板题——

    【例 1】Prime Distance(信息学奥赛一本通 1619)

    【题目描述】

    给定两个整数 L,R,求闭区间 [L,R] 中相邻两个质数差值最小的数对与差值最大的数对。当存在多个时,输出靠前的素数对。

    【输入】

    多组数据。每行两个数 L,R。

    【输出】

    详见输出样例。

    【输入样例】

    2 17

    14 17

    【输出样例】

    2,3 are closest, 7,11 are most distant.

    There are no adjacent primes.

     

  • 相关阅读:
    LeetCode208 实现 Trie (前缀树)
    LeetCode289 生命游戏(模拟)
    LeetCode560 和为 K 的子数组
    LeetCode673 最长递增子序列的个数
    LeetCode31 下一个排列
    LeetCode926 将字符串翻转到单调递增
    LeetCode135 分发糖果
    LeetCode810 黑板异或游戏
    npm发布和修改详细教程
    不同的子序列问题I
  • 原文地址:https://www.cnblogs.com/ljy-endl/p/11377521.html
Copyright © 2020-2023  润新知