fork download
  1. #include <bits/stdc++.h> // NeOWami
  2. using namespace std;
  3. #define int long long
  4.  
  5. int eulerPhi(int n) { // = n (1-1/p1) ... (1-1/pn)
  6. if (n == 0) return 0;
  7. int ans = n;
  8. for (int x = 2; x*x <= n; ++x) {
  9. if (n % x == 0) {
  10. ans -= ans / x;
  11. while (n % x == 0) n /= x;
  12. }
  13. }
  14. if (n > 1) ans -= ans / n;
  15. return ans;
  16. }
  17.  
  18. const int N = 1e6 + 5;
  19. int euler[N];
  20.  
  21. bool prime[N];
  22. /*
  23. int phi[N], isPrime[N];
  24. void sieve(int n) {
  25.   for (int i = 1; i <= n; i++) phi[i] = i;
  26.   for (int i = 2; i <= n; i++) if (!isPrime[i]) {
  27.   for (int j = i * i; j <= n; j += i) isPrime[j] = 1;
  28.   for (int j = i; j <= n; j += i) phi[j] -= phi[j] / i;
  29.   }
  30.   phi[1] = 0;
  31. }
  32. */
  33. void sieve(){
  34. for (int i = 0; i < N; i++) euler[i] = i;
  35.  
  36. prime[0] = prime[1] = 1;
  37. for (int i = 2; i * i < N; i++){
  38. if (!prime[i]){
  39. for (int j = i * i; j < N; j += i){
  40. prime[j] = true;
  41. }
  42. }
  43. }
  44.  
  45. for (int i = 1; i < N; i++){
  46. if (!prime[i]){
  47. // euler[i]--;
  48. for (int j = i; j < N; j += i){
  49. euler[j] -= euler[j] / i;
  50. }
  51. }
  52. }
  53. euler[1] = 0;
  54. }
  55.  
  56. signed main() {
  57. cin.tie(NULL)->sync_with_stdio(false);
  58. if(ifstream("Input.inp")) {
  59. freopen("Input.inp", "r", stdin);
  60. freopen("Output.out", "w", stdout);
  61. }
  62.  
  63. sieve();
  64.  
  65. for (int i = 1; i < 100; i++){
  66. cerr << i << " " << eulerPhi(i) << " " << euler[i] << "\n";
  67. }
  68. return 0;
  69. }
Success #stdin #stdout #stderr 0.08s 12352KB
stdin
Standard input is empty
stdout
Standard output is empty
stderr
1 1 0
2 1 1
3 2 2
4 2 2
5 4 4
6 2 2
7 6 6
8 4 4
9 6 6
10 4 4
11 10 10
12 4 4
13 12 12
14 6 6
15 8 8
16 8 8
17 16 16
18 6 6
19 18 18
20 8 8
21 12 12
22 10 10
23 22 22
24 8 8
25 20 20
26 12 12
27 18 18
28 12 12
29 28 28
30 8 8
31 30 30
32 16 16
33 20 20
34 16 16
35 24 24
36 12 12
37 36 36
38 18 18
39 24 24
40 16 16
41 40 40
42 12 12
43 42 42
44 20 20
45 24 24
46 22 22
47 46 46
48 16 16
49 42 42
50 20 20
51 32 32
52 24 24
53 52 52
54 18 18
55 40 40
56 24 24
57 36 36
58 28 28
59 58 58
60 16 16
61 60 60
62 30 30
63 36 36
64 32 32
65 48 48
66 20 20
67 66 66
68 32 32
69 44 44
70 24 24
71 70 70
72 24 24
73 72 72
74 36 36
75 40 40
76 36 36
77 60 60
78 24 24
79 78 78
80 32 32
81 54 54
82 40 40
83 82 82
84 24 24
85 64 64
86 42 42
87 56 56
88 40 40
89 88 88
90 24 24
91 72 72
92 44 44
93 60 60
94 46 46
95 72 72
96 32 32
97 96 96
98 42 42
99 60 60