码迷,mamicode.com
首页 > 其他好文 > 详细

poj2407(欧拉函数模板题)

时间:2019-05-07 12:51:21      阅读:93      评论:0      收藏:0      [点我收藏+]

标签:nbsp   problem   return   cst   分解   class   print   scanf   代码   

题目链接:https://vjudge.net/problem/POJ-2407

题意:给出n,求0..n-1中与n互质的数的个数。

思路:欧拉函数板子题,先根据唯一分解定理求出n的所有质因数p1,p2,...,pn,然后根据Φ(m)=m*∏(1-1/pi)计算即可。

AC代码:

#include<cstdio>
using namespace std;

int n,ans;

int main(){
    while(scanf("%d",&n),n){
        ans=n;
        for(int i=2;i*i<=n;++i){
            if(n%i==0){
                ans=ans/i*(i-1);
                while(n%i==0) n/=i;
            }
        }
        if(n!=1)
            ans=ans/n*(n-1);
        printf("%d\n",ans);
    }
    return 0;
}

 

poj2407(欧拉函数模板题)

标签:nbsp   problem   return   cst   分解   class   print   scanf   代码   

原文地址:https://www.cnblogs.com/FrankChen831X/p/10824683.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!