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。 無効に(INT&X){ 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 。 }