欧拉函数

来源:互联网 发布:电脑性能评测软件 编辑:程序博客网 时间:2024/06/03 17:36

原处:http://blog.csdn.net/once_hnu/article/details/6302868  转载以供查用。

对正整数n,欧拉函数是少于或等于n的数与n互质的数数目。例如euler(8)=4,因为1,3,5,7均和8互质。

Euler函数表达通式:euler(x)=x(1-1/p1)(1-1/p2)(1-1/p3)(1-1/p4)…(1-1/pn),其中p1,p2……pn为x的所有素因数,x是不为0的整数。euler(1)=1(唯一和1互质的数就是1本身)。

例如euler(8)=8*(1-1/2)=4。(8的素因数只有2一个)

欧拉公式的延伸:一个数的所有质因子之和是euler(n)*n/2。

简单实现代码:

#include <stdio.h>#include <stdlib.h>int eular(int n){    int ret=1,i;    for(i=2;i*i<=n;i++){        if(n%i==0){            n/=i,ret*=i-1;            while(n%i==0) n/=i,ret*=i;        }    }    if(n>1) ret*=n-1;    return ret;}int main (){      int n,s;      scanf("%d",&n);      s=eular(n);      printf("%d",s);      return 0;}



0 0
原创粉丝点击