文件名称:Euler_fuction2

  • 所属分类:
  • 数值算法/人工智能
  • 资源属性:
  • [C/C++] [源码]
  • 上传时间:
  • 2012-11-26
  • 文件大小:
  • 1kb
  • 下载次数:
  • 0次
  • 提 供 者:
  • Camp****
  • 相关连接:
  • 下载说明:
  • 别用迅雷下载,失败请重下,重下不扣分!

介绍说明--下载内容均来自于网络,请自行研究使用

//Euler 函数前n项和

/*

phi(n) 为n的Euler原函数

if( (n/p) % i == 0 ) phi(n)=phi(n/p)*i

else phi(n)=phi(n/p)*(i-1)



对于约数:divnum

如果i|pr[j] 那么 divnum[i*pr[j]]=divsum[i]/(e[i]+1)*(e[i]+2) //最小素因子次数加1

否则 divnum[i*pr[j]]=divnum[i]*divnum[pr[j]] //满足积性函数条件



对于素因子的幂次 e[i]

如果i|pr[j] e[i*pr[j]]=e[i]+1 //最小素因子次数加1

否则 e[i*pr[j]]=1 //pr[j]为1次



对于本题:

1. 筛素数的时候首先会判断i是否是素数。

根据定义,当 x 是素数时 phi[x] = x-1

因此这里我们可以直接写上 phi[i] = i-1



2. 接着我们会看prime[j]是否是i的约数

如果是,那么根据上述推导,我们有:phi[ i * prime[j] ] = phi[i] * prime[j]

否则

phi[ i * prime[j] ] = phi[i] * (prime[j]-1)

(其实这里prime[j]-1就是phi[prime[j]],利用了欧拉函数的积性)

经过以上改良,在筛完素数后,我们就计算出了phi[]的所有值。

我们求出phi[]的前缀和

*/-err
(系统自动生成,下载前可以参看下载内容)

下载文件列表

Euler函数前n项和.cpp

相关说明

  • 本站资源为会员上传分享交流与学习,如有侵犯您的权益,请联系我们删除.
  • 本站是交换下载平台,提供交流渠道,下载内容来自于网络,除下载问题外,其它问题请自行百度更多...
  • 请直接用浏览器下载本站内容,不要使用迅雷之类的下载软件,用WinRAR最新版进行解压.
  • 如果您发现内容无法下载,请稍后再次尝试;或者到消费记录里找到下载记录反馈给我们.
  • 下载后发现下载的内容跟说明不相乎,请到消费记录里找到下载记录反馈给我们,经确认后退回积分.
  • 如下载前有疑问,可以通过点击"提供者"的名字,查看对方的联系方式,联系对方咨询.

相关评论

暂无评论内容.

发表评论

*主  题:
*内  容:
*验 证 码:

源码中国 www.ymcn.org