zoukankan      html  css  js  c++  java
  • NYOJ 333

    http://www.cppblog.com/RyanWang/archive/2009/07/19/90512.aspx?opt=admin

    欧拉函数

    E(x)表示比x小的且与x互质的正整数的个数。
    *若p是素数,E(p)=p-1。
    *E(pk)=pk-pk-1=(p-1)*pk-1
    证:令n=pk,小于n的正整数数共有n-1即(pk-1)个,其中与p不质的数共[pk-1-1]个(分别为1*p,2*p,3*p...p(pk-1-1))。
    所以E(pk)=(pk-1)-(pk-1-1)=pk-pk-1.得证。
    *若ab互质,则E(a*b)=E(a)*E(b),欧拉函数是积性函数.
    *对任意数n都可以唯一分解成n=p1a1*p2a2*p3a3*...*pnan(pi为素数).
    则E(n)=E(p1a1)*E(p2a2)*E(p3a3)*...*E(pnan)     
          =(p1-1)*p1(a1-1)*(p2-1)*p2(a2-1)*...*(pn-1)*pn(an-1)
          =(p1a1*p2a2*p3a3*...*pnan)*[(p1-1)*(p2-1)*(p3-1)*...*(pn-1)]/(p1*p2*p3*...*pn)
          =n*(1-1/p1)*(1-1/p2)*...*(1-1/pn)

      (pi为n的素因子)

    NYOJ 333  题目:

    mdd的烦恼

    描述
    今天mdd看到这么一段话:在数论,对正整数n,欧拉函数是少于或等于n的数中与n互质的数的数目。此函数以其首名研究者欧拉命名,它又称为Euler's totient function、φ函数、欧拉商数等。 例如φ(8)=4,因为1,3,5,7均和8互质。于是他想用计算机实现欧拉函数的功能,但是他又不想去写,你能帮帮他吗?
    ps:互质(relatively primeì)又叫互素。若N个整数的最大公因数是1,则称这N个整数互质。
    输入
    有多组测试数据组数小于1003,
    每组测试数据有一个整数n(0<n<=65535^2+1).
    输出
    输出欧拉函数φ(n)的值。
    样例输入
    2
    6
    46
    样例输出
    1
    2
    22

    AC代码:

     1 #include<stdio.h>
     2 long long phi(long long a){
     3     long long temp=a;
     4     for(long long i=2;i*i<=a;i++){
     5         if(a%i==0){
     6             while(!(a%i))a/=i;  //去掉所有的质因子i (由i*i<=a 保证这些i都是质因子)  
     7             temp=temp/i*(i-1);  
     8         }
     9     }
    10     if(a!=1) temp=temp/a*(a-1);  //考虑a为质数的情况    
    11     return temp;
    12 } 
    13 
    14 int main() {
    15     long long a,b,c;
    16     while(scanf("%lld",&a)!=EOF)
    17         printf("%lld
    ",phi(a));
    18     return 0;
    19 }
  • 相关阅读:
    “Hello World”团队第一周博客汇总
    SFTP服务器之创建普通用户
    软工2017第五周——个人PSP
    "Hello world!"团队第一次会议
    软工2017第四周作业--结对编程之四则运算
    软工2017第四周作业结对编程——个人psp
    软工2017第四周作业结对编程——单元测试
    软工2017第四周作业——代码规范
    软工第三次作业——个人PSP
    iOS原生和React-Native之间的交互1
  • 原文地址:https://www.cnblogs.com/liugl7/p/5387490.html
Copyright © 2011-2022 走看看