poj2407欧拉

来源:互联网 发布:整形医院网络咨询话术 编辑:程序博客网 时间:2024/06/05 19:57

直接euler


#include<iostream>#include<cstdio>#include<cstring>#include<cmath>#include<vector>#include<algorithm>#include<map>using namespace std;const int maxn = 100000 + 10;#define INF 0x3f3f3f3f#define clr(x,y) memset(x,y,sizeof x )typedef long long ll;#define eps 10e-10const ll Mod = 1000000007;typedef pair<ll, ll> P;//int euler[maxn];//void Init()//{//    euler[1] = 1;//    for(int i = 2; i < maxn; i ++)//        euler[i] = i;//    for(int i = 2; i < maxn; i ++)//        if(euler[i] == i)//        for(int j = i ; j < maxn; j += i)//        euler[j] = euler[j] /i *(i - 1);//}int euler(int n){    int 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);    return ans;}int main(){    int n;    while( ~ scanf("%d",&n) && n)    {        printf("%d\n",euler(n));    }    return 0;}


原创粉丝点击