poj2407(オイラー関数テンプレート)

SQRT(n)は、複雑

オイラー関数テンプレート

#include <iostreamの> 
する#include <cstdioを> 
する#include <キュー> 
の#include <アルゴリズム> 
の#include <cmath> 
の#include <CStringの>
 に#define INF 2147483647
 の#define N 1000010
 の#define P(A)のputchar(A)
 の#define(iは、、B)は(; iが= Bを<++ iは= INT)のために使用した名前空間STDを、
INTのN、M、ANS。
無効INTX){
     int型、Y = 1チャー C = GETCHAR(); X = 0 しばらく(C < " 0

  ' || C> ' 9 '){ もし、(C == ' - ')Y = - 1 ; C = GETCHAR();}
     一方、(C <= ' 9 ' && C> = ' 0 '){(X = X << 1)+(X << 3)+ C- ' 0 ' ; C = GETCHAR();} 
    X * = Y。
} 
ボイド O(int型X){
     場合(X < 0){P(' - '); X = - X。
    9)O(X / 10 )。
    P(Xの10 + ' 0 ' )。
} 

int型のmain(){
     一方(CIN >> N && N){ 
        M = INT(SQRT(N + 0.5 ))。
        ANS = N。
        (Iについて2 {、m)の
             場合(N%I == 0 
                ANS = ANS /私は(I-* 1 )。
            一方、(N%のI == 0 
                N / = I。
        } 
        場合(N> 1  =年/ N *(N- 1 ); 
        O(年)P(' \ nを' ); 
    } 
    戻り 0 
}

 

おすすめ

転載: www.cnblogs.com/war1111/p/11297513.html