zoukankan      html  css  js  c++  java
  • 欧拉函数和除数函数

    1  欧拉函数

    定义:

    若n为正整数,不大于n且与n互素的数的个数成为欧拉函数,记为φ(n)。

    公式:

    φ(n)=n*(1-1/p1)*(1-1/p2)*……*(1-1/pn),其中p1、p2……pn为n的质因数;

    若n为素数,φ(n)=n-1。

    例如:

    24=2*2*2*3

    φ(24)=24*(1-1/2)*(1-1/3)=8

    代码:

    int oula(int n)
    {
         int a=n,i;
         for(i=2; i<=n; i++)
             if(n%i==0)//第一次找到的必为素因子
             {
                 a=a-a/i;
                 while(n%i==0)
                     n/=i;//把该素因子全部约掉
             }
         return a;
    }//
    int oula(int n)
    
    {
      int res=n,a=n;
      for(int i=2;i*i<=a;i++)
        if(a%i==0)
    
        {
    
            res=res/i*(i-1);//先进行除法是为了防止中间数据的溢出 
        while(a%i==0) a/=i;
        }
      if(a>1)
    
        res=res/a*(a-1);
      return res;
    }//

    2   除数函数(求正约数个数)

    定义:

    正整数n的正约数的个数,记为d(n)。

    公式;

    若n=p1α1*p2α2*……*pnαn

    d(n)=(α1+1)*(α2+1)*......*(αn+1)。

    例如;

    d(24)=(3+1)*(1+1)=8。

  • 相关阅读:
    json_encode([0])
    try catch throw
    如何 lookback
    协程||进程
    客户错了?
    循环 php 变量会影响到传入的参数
    csv变成xls, csv乱码
    虚拟机不能git push
    数组下标大小写
    php 静态方法
  • 原文地址:https://www.cnblogs.com/jyhywh/p/5660838.html
Copyright © 2011-2022 走看看