File tree Expand file tree Collapse file tree 2 files changed +28
-498
lines changed Expand file tree Collapse file tree 2 files changed +28
-498
lines changed Original file line number Diff line number Diff line change
1
+ package Algorithms ;
2
+
3
+ class EularTotient {
4
+ /*
5
+ * compute the eular totient(https://en.wikipedia.org/wiki/Euler%27s_totient_function)
6
+ * of the given numer, speeding up the computation when we have prime numbers
7
+ *
8
+ * time complexity: O(k log n) where k = no of prime factors
9
+ * this method is advantagious when we have large numbers whose prime factors
10
+ * are small numbers eg. eular totient of 16'402'500'000 = 2^5 * 3^8 * 5^7 can be computed
11
+ * in only 3 steps.
12
+ */
13
+ private long totient (long n , long primes []){
14
+ long result = n ;
15
+ for (int i =0 ; primes [i ] <= n ; i ++)
16
+ {
17
+ if (n < primes [i ])
18
+ break ;
19
+ if (n % primes [i ] == 0 )
20
+ result -= result / primes [i ];
21
+ while (n % primes [i ] == 0 )
22
+ n /= primes [i ];
23
+ }
24
+ if (n > 1 )
25
+ result -= result / n ;
26
+ return result ;
27
+ }
28
+ }
You can’t perform that action at this time.
0 commit comments