快速求解欧拉函数

来源:互联网 发布:公司取名软件crsky 编辑:程序博客网 时间:2024/06/06 17:24
源代码:
void get(){  for(int i=2;i<1001000;i++){      num[i]=1;      euler[i]=i;  }  for(int i=2;i<1001000;i++)   {       if(num[i])       for(int j=i;j<1001000;j+=i)       {           num[j]=0;           euler[j]=euler[j]/i*(i-1);       }   }}

刚开始的时候,第一个循环的判断条件是i*i<1001000,后来发现这样的话,不能将j的所有质因子都找到,他这样只枚举了sqrt(1001000)的素数。

搞得我调了一段时间。

原创粉丝点击