1. 程式人生 > >歐拉函數模板

歐拉函數模板

class for sin esp logs include blog turn names

#include<iostream>
using namespace std;

int main()
{
    long long ans,n;
    while(1){
        cin>>n;
        if(!n) return 0;
        ans=n;
        if(n%2==0)
        {
            while(n%2==0)  n/=2;
            ans/=2;
        }
        for(long long i=3;i*i<=n;i+=2
) { if(n%i==0) { while(n%i==0) n/=i; ans=ans/i*(i-1); } } if(n>1) ans=ans/n*(n-1); cout<<ans<<endl; } return 0; }

歐拉函數模板