线筛 初见

o(n)的复杂度,筛出各种神奇。

bzoj2190仪仗队

#include<iostream>
#include<cstdio>
using namespace std;
int phi[40001]={0},prime[40001]={0};
bool flag[40001]={false};
void work(int n)
{
    int i,j;
    for (i=2;i<=n;++i)
    {
        if (!flag[i])
        {
            ++prime[0];prime[prime[0]]=i;phi[i]=i-1;
        }
        for (j=1;j<=prime[0]&&i*prime[j]<=n;++j)
        {
            flag[prime[j]*i]=true;
            if (i%prime[j]==0)
            {
                phi[i*prime[j]]=phi[i]*prime[j];break;
            }
            else phi[i*prime[j]]=phi[i]*(prime[j]-1);
        }
    }
}
int main()
{
    int n,ans=0,i;
    scanf("%d",&n);
    work(n);
    for (i=2;i<n;++i)
        ans+=phi[i]*2;
    ans+=3;
    if (n==1) printf("1\n");
    else printf("%d\n",ans);
}

时间: 2024-10-13 06:47:27

线筛 初见的相关文章

杜教筛 模板

转自: http://blog.leanote.com/post/totziens/%E8%8E%AB%E6%AF%94%E4%B9%8C%E6%96%AF%E5%8F%8D%E6%BC%94%E4%B8%8E%E6%9D%9C%E6%95%99%E7%AD%9B 1. 求$\sum\limits_{i=1}^n\mu(i),n\leqslant 10^{11}$直接求不好求,但是我们有$\sum\limits_{i=1}^n\sum\limits_{d|i}\mu(d)=1$化一下蛤:$\su

【学术篇】分析矿洞 杜教筛

数论什么的都去死吧! 看着题解我都能化式子用完4页草纸... 另外吐槽一句出题人的拼音学的是真好, 不知道是不是故意的. 其实题解已经写得挺详细的了. 我就是提一些出题人觉得太easy没必要提但是做题还是需要的一些东西....(因为这些东西我基本都是现学的) 然而之前刚刚学完mobius反演就暂时性脱坑的我啥也不会啊.. 看到前排dp和曲神在水luogu的欢(bao/du)乐(ling/liu)赛, 就想去看看. 然后就点了报名但是发现自己什么都不会. 去看了看T1. 就是这道题. 然后成功的化

51nod 1220 约数之和(杜教筛 + 推推推推推公式)

题意 给出\(n(1\leq n \leq 10^9)\),求\(\sum_{i=1}^n\sum_{j=1}^n\sigma(ij)\),其中\(\sigma(n)\)表示\(n\)的约数之和. balabala 交了两道杜教筛的的板子题(51nod 1239, 1244)就看到了这题,然后不会搞,然后看题解看了一天一夜终于彻底搞明白一发A掉了...感觉学到了很多,写个博客整理一下,如有错请指出. 技能需求 数论函数与线性筛 莫比乌斯反演(也可以当成容斥去理解) 狄利克雷卷积 杜教筛 强大的数

日常大合集

仅以此记录每天的题目,趣事;留的坑红色标出,值得以后再看的总结的蓝色标出;计划黄色标出; 2016.05.10 BZOJ4513  费用流+线筛+质因数分解+贪心 BZOJ3280 sb费用流 BZOJ2839 容斥+逆元+组合 BZOJ2440 容斥+Mu函数应用 BZOJ1568 线段树标记永久化  传送门 BZOJ1339 垃圾最小割 BZOJ1163 1339双倍经验 BZOJ3165 1568近似双倍经验 BZOJ1171 DP+单调队列+标记永久化(坑,好题)

【史前巨坑】数论模板整合

跪了一下午数论 整理了一下数论模板 这是个史前巨坑,有空慢慢填 #include<iostream> #include<cstdio> #include<cstring> #include<cmath> #include<algorithm> #define MAXN 1000000 using namespace std; bool not_prime[MAXN]; int prime_number[MAXN]; int nu; int fac

数论小结2.

---恢复内容开始--- 今天江哥来个给我们讲一些数学方面的小知识...小小总结一下! 1. exgcd(). 1 inline ll exgcd(ll a,ll b,ll c){ 2 return c % a ? (exgcd(b % a, a, ((-c % a) + a) % a) * b + c) / a : c / a; 3 } 江哥的神代码... 非常简单直接就能求逆元. 2.线筛 prime && phi && 逆元 1 inline void sieve()

[Spoj]Counting Divisors (cube)

来自FallDream的博客,未经允许,请勿转载,谢谢. 设d(x)表示x的约数个数,求$\sum_{i=1}^{n}d(i^{3})$ There are 5 Input files. - Input #1: 1≤N≤10000, TL = 1s. - Input #2: 1≤T≤300, 1≤N≤10^8, TL = 20s. - Input #3: 1≤T≤75, 1≤N≤10^9, TL = 20s. - Input #4: 1≤T≤15, 1≤N≤10^10, TL = 20s. -

最小质因数和

这题实在是比较一棵赛艇就发上来好了. 题目: 给定n,求出小于等于n的所有合数的最小质因数之和. 对于70%的数据,n<=10^7. 对于100%的数据,n<=10^9. 题解: 70% 线筛大法好 100% 首先我们考虑对于每一个小于等于sqrt(n)的质数容斥,然后稍微推一推就可以得到一个比较靠谱的容斥方法,虽然复杂度玄学但是似乎跑得蛮快的.然后我们测一下时间--真是不巧n=10^9要跑2s左右.(我就是这么被卡掉的 标程是这样的: 我们定一个阀值k=100,对于<=k的质因数(一共

数论之旅4---欧拉函数的证明及代码实现(我会证明都是骗人的╮( ̄▽ ̄)╭)

欧拉函数,用φ(n)表示 欧拉函数是求小于n的数中与n互质的数的数目 辣么,怎么求哩?~(-o ̄▽ ̄)-o 可以先在1到n-1中找到与n不互质的数,然后把他们减掉 比如φ(12) 把12质因数分解,12=2*2*3,其实就是得到了2和3两个质因数 然后把2的倍数和3的倍数都删掉 2的倍数:2,4,6,8,10,12 3的倍数:3,6,9,12 本来想直接用12 - 12/2 - 12/3 但是6和12重复减了 所以还要把即是2的倍数又是3的倍数的数加回来 (>﹏<) 所以这样写12 - 12/