P2568 GCD,线性筛-欧拉函数 模板)

技术P2568 GCD,线性筛-欧拉函数 模板) P2568 GCD(线性筛-欧拉函数 模板)有两个易错点:
1.欧拉函数的定义是1到n内互质的数,但是“互质”不一定要都是质数,其实就只需要gcd(a,

P2568 GCD(线性筛-欧拉函数模板)

有两个容易出错的地方:

1.欧拉函数定义为从1到n的质数,但“质数”不一定是质数。事实上,只有当gcd(a,b)=1时才能计算。因此,我们不能放弃A=1,B=1的情况。

2.第一次做的时候觉得应该避免i=j的情况,但问题是简化公式本身已经考虑到了i=j的情况,并以此作为进一步计算的基础。

其他想法:做练习。即使不是,我也不得不承认。不要去想你的‘AC’,哪怕很牛逼,体验1。(这可以让你在打铁的时候‘开心’)

#includecstdio

#包括牡蛎

# includecstring

#定义ll长

使用命名空间标准;

const int MAXN=2e7

int primes[MAXN],CNT=0;

bool is prime[MAXN];

ll phi[MAXN],SumPhi[MAXN];

void init(int n){ 0

memset(isPrime,1,sizeof(isPrime));

[1]=1;

isPrime[1]=0,phi[2]=1;

for(int I=2;I=n;I){ 0

if(isPrime[i])素数[ cnt]=i,phi[I]=I-1;

for(int j=1;j=cntprimes[j]* I=n;j ){

is prime[I * primes[j]]=0;

If(i%primes[j]==0){//可整除。

[I *素数[j]]=素数[j]*[I];

打破;

} else phi[I *素数[j]]=phi[I]* phi[素数[j]];

}

}

for(int I=1;I=n;(一)

sumPhI[I]=sumPhI[I-1]PhI[I];

返回;

}

int main(){ 0

int n;

scanf('%d ',n);

init(n);

ll ans=0;

for(ll I=1;i=cntI){ 0

int p=素数[I];//枚举质数

ans=(2 * sumPhi[n/p-1]);//错误公式

ans=2 * sumPhi[n/p]-1;//正确的公式

}

printf('%lld\n ',ans);

返回0;

}

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/139161.html

(0)

相关推荐

  • 如何理解Oracle 12c CDB的ADG

    技术如何理解Oracle 12c CDB的ADG这篇文章将为大家详细讲解有关如何理解Oracle 12c CDB的ADG,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。实验

    攻略 2021年11月29日
  • HTML5 Flash视频flv播放器有什么功能

    技术HTML5 Flash视频flv播放器有什么功能这篇文章主要介绍“HTML5 Flash视频flv播放器有什么功能”,在日常操作中,相信很多人在HTML5 Flash视频flv播放器有什么功能问题上存在疑惑,小编查阅

    攻略 2021年11月12日
  • 基维百科,维基百科新规带来哪些改变

    技术基维百科,维基百科新规带来哪些改变为确保其平台的安全以及对抗各种骚扰行为,维基百科近日宣布正在实施新的行为准则基维百科。部分成员,尤其是女性和LGBTQ社区成员,抱怨平台上经常遭到会员编辑的“有毒行为”言语。该网站主

    生活 2021年10月31日
  • 三横三竖三撇三捺是什么字,三横三竖三撇三捺念什么字啊

    技术三横三竖三撇三捺是什么字,三横三竖三撇三捺念什么字啊森。可以先想一横三横三竖三撇三捺是什么字,一竖,一撇,一捺 是什么字,是木,三个木就是森。森是一个汉字,读作sēn,本意是树木丛生繁密,引申义是从林从木,整齐而严肃

    生活 2021年10月26日
  • 人有多少块肌肉,人最坚硬的肌肉是哪块啊`?

    技术人有多少块肌肉,人最坚硬的肌肉是哪块啊`?人体共约639块肌肉,我们生活中的一切动作,都是在神经系统的调控下,由肌肉的收缩和舒张带动骨人有多少块肌肉、关节运动而实现的。现在,摸摸你的身体,你觉得哪块肌肉最强壮?舌头、

    生活 2021年10月27日
  • 怎么编写C++程序并把它做成ipk包

    技术怎么编写C++程序并把它做成ipk包这篇文章主要讲解了“怎么编写C++程序并把它做成ipk包”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么编写C++程序并把它做成

    攻略 2021年11月30日