• 欧拉函数


            欧拉函数:即求1到正整数n之间与n互质的数的个数。(特别的, 当 n = 1 时, 数目F(n) = 1) 。

            现在分析一下, 当n大于1时的情况, 当 n 为素数时, 很显然 F(n) = n-1 。当n不是素数时,有唯一分解定理可知, n 可以分解成 几个 素数 乘积的形式。例如

     4 = 2 * 2, F(2) = 1;  对于 2^(n+1)  在每一个 F(2^(n+1)) = 2^n * F(2) (想一想为什么? 例如 F(5) = 4, 这 4 个数分别为 1, 2, 3, 4 。 则, 1+5, 2+5, 3+5, 4+5, 1+(2*5),,,4+(4*5)一定和25互质, 则 F(25) = 5*F(5) = 4*5 = 20)   又因为 欧拉函数是积性函数(这个证明较为繁琐, 在此略去!)

    所以, n = a^(i+1)* b^(j+1),,,  则 F(n) = F(a)*a^i  *  F(b)*b^j,,,

    详见代码:

     1 #include<cstdio>
     2 #include<iostream>
     3 using namespace std;
     4 
     5 int eular(int n)
     6 {
     7     int ret = 1, i;
     8     for(i=2; i*i<=n; i++)
     9         if(n%i==0)
    10         {
    11             n/=i, ret*=i-1;
    12             while(n%i==0)
    13             n/=i, ret*=i;
    14         }
    15         if(n>1)
    16         ret*=n-1;
    17         return ret;
    18 }
    19 
    20 int main()
    21 {
    22     int n;
    23     while(scanf("%d", &n)!=EOF)
    24     {
    25         n=eular(n);
    26         printf("%d
    ", n);
    27     }
    28     return 0;
    29 }
    View Code

    《2》线性筛选--欧拉函数

     1 //线性筛法求解极性函数(欧拉函数)
     2 memset(check, false, sizeof(check));
     3 fai[1] = 1;
     4 int tot = 0;
     5 for(int i=2; i<=N; i++)
     6 {
     7     if(!check[i])
     8     {
     9         prime[tot++] = i;
    10         fai[i] = i-1;
    11     }
    12 for(int j=0; j<tot; j++)
    13 {
    14     if(i*prime[j]>N) break;
    15     check[i*peime[j]] = true;
    16     if(i%prime[j]==0)
    17     {
    18         fai[i*prime[j]] = fai[i]*prime[j];
    19         break;
    20     }
    21     else
    22     {
    23         fai[i*prime[j]] = fai[i]*(prime[j]-1);
    24     }
    25 }
    26 }
    View Code
  • 相关阅读:
    线性变换 矩阵
    【安全】安全测试基本切入点
    【产品】汉语言基础对产品经理的重要性
    【Selenium】自动化调试后C盘越来越大
    【记录】让人淡疼的BUG之参数传送错误
    【转载】Java 升级到jdk7后DbVisualizer 6 启动空指针的处理方案
    cocoapods 报错
    mac 版 Pycharm 激活
    Foxmail添加gmail密码错误
    Apple 相关官方地址
  • 原文地址:https://www.cnblogs.com/acm1314/p/4518500.html
Copyright © 2020-2023  润新知