#include <iostream>
#include <conio.h>
using namespace std;
int phi(int n){
int result;
result = n;
for (int i = 2; i*i <= n; ++i){
if (n % i == 0){
while (n % i == 0){
n /= i;
}
result -= result / i;
}
}
if (n > 1){
result -= result / n;
}
return result;
}
int main(){
int n;
cin >> n;
cout << phi(n);
_getch();
return 0;
}
Если вам так хочется поубивать время - используйте генераторы прокси-классов. Просто оборачивайте свой класс проксей и там подменяйте реализации.