文件名称:Euler_fuction

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

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

  Euler函数:

m = p1^r1 * p2^r2 * …… * pn^rn ai >= 1 , 1 <= i <= n

Euler函数:

定义:phi(m) 表示小于等于m并且与m互质的正整数的个数。

      phi(m) = p1^(r1-1)*(p1-1) * p2^(r2-1)*(p2-1) * …… * pn^(rn-1)*(pn-1)

         = m*(1 - 1/p1)*(1 - 1/p2)*……*(1 - 1/pn)

         = p1^(r1-1)*p2^(r2-1)* …… * pn^(rn-1)*phi(p1*p2*……*pn)

定理:若(a , m) = 1 则有 a^phi(m) = 1 (mod m) 即a^phi(m) - 1 整出m



在实际代码中可以用类似素数筛法求出

  for (i = 1 i < MAXN i++)

    phi[i] = i

  for (i = 2 i < MAXN i++)

    if (phi[i] == i)

    {

      for (j = i j < MAXN j += i)

      {

        phi[j] /= i

        phi[j] *= i - 1

      }

    }



容斥原理:定义phi(p) 为比p小的与p互素的数的个数

设n的素因子有p1, p2, p3, … pk

包含p1, p2…的个数为n/p1, n/p2…

包含p1*p2, p2*p3…的个数为n/(p1*p2)…

phi(n) = n - sigm_[i = 1](n/pi) + sigm_[i!=j](n/(pi*pj)) - …… +- n/(p1*p2……pk)

   = n*(1 - 1/p1)*(1 - 1/p2)*……*(1 - 1/pk)

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

下载文件列表

Euler函数.cpp

相关说明

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

相关评论

暂无评论内容.

发表评论

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

源码中国 www.ymcn.org