zoukankan      html  css  js  c++  java
  • min25筛

    min25筛,可以用来求积性函数前缀和。
    这个函数要求,(f(p^x))能表示为关于(p^x)的一个多项式。
    算法分两步:
    1.求出对于所有(x=frac{n}{i}),x以内所有质数的f和。
    方法如下:
    首先,把所有数当成质数代入多项式,求出一个“假的”前缀和。
    然后,通过埃氏筛法,将非质数除去。
    每次,当筛质数(P_x)时,将最小质因数大于等于(P_x)的除去。
    这可以利用之前的结果,进行dp。
    具体来说,设(g(i,j))表示1到i内,进行j次筛法,剩的数,代入多项式算的f值之和
    由于是多项式,我们可以依次求出每一项,这样,可以保证它是完全积性函数。
    根据定义:(g(i,j))包括两部分:
    1、i以内的所有质数。
    2、i以内,最小质因数大于(P_j)的合数。
    考虑求法:
    (P_j^2>i),那么(P_j)不会筛掉任何数,(g(i,j)=g(i,j-1))
    否则,筛掉的是最小质因数大于等于(P_j),且为(P_j)倍数的合数。-
    即对于所有x,满足(x*P_jleq i),且x的最小质因数大于等于(P_j),这样的(f(P_j)*f(x))应当减去。
    可以发现,它就是(g(frac{i}{P_j},j-1))减去小于(P_j)的质数。质数的前缀和可以预处理。


    暂时不会去写了

  • 相关阅读:
    1007 素数对猜想 (20 分)
    1005 继续(3n+1)猜想 (25 分)
    1002 写出这个数 (20 分)
    1001 害死人不偿命的(3n+1)猜想 (15 分)
    mysql常用操作
    mysql乱码问题
    mysql忘记root密码
    linux开机启动
    fedora 调整屏幕亮度
    Access denied for user 'root'@'localhost' (using password:YES) 解决方案
  • 原文地址:https://www.cnblogs.com/lnzwz/p/12037641.html
Copyright © 2011-2022 走看看