欧拉函数的计算

NOIp要来了,最后Orz一把LRJ.
欧拉函数
欧拉函数,别的计算方法不会不多证明.直接上代码

#include <iostream>
#include <cstring>
#include <cstdio>
#include <cstdlib>
#include <cmath>

using namespace std ;

int euler_phi ( int x ) {
    int i, j, k, ans = x, lim = (int)sqrt(x+0.5) ;
    for ( i = 2 ; i <= lim ; i ++ ) 
        if ( x % i == 0 ) {
            ans = ans / i * ( i-1 ) ;
            while ( x%i==0 ) x /= i ;
        }
    if ( x > 1 ) ans = ans / x * (x-1) ; 
    //如果剩下的x也是原来x的因数
    return ans ;
}

int main() {
    int i, j, k, n, m ;
    while ( scanf ( "%d", &n ) != EOF ) 
        printf ( "Euler_phi(%d) = %d\n", n, euler_phi(n) ) ; 
    return 0 ; 
}
阅读更多
版权声明:hhhhh https://blog.csdn.net/WT_cnyali/article/details/53195187
文章标签: 函数 phi
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

不良信息举报

欧拉函数的计算

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭