fork download
  1. #include <bits/stdc++.h>
  2.  
  3. using namespace std;
  4.  
  5. // Function to compute the Euler's totient function for each number up to n
  6. void computeTotient(int n, vector<int>& phi) {
  7. for (int i = 1; i <= n; i++) {
  8. phi[i] = i;
  9. }
  10.  
  11. for (int i = 2; i <= n; i++) {
  12. if (phi[i] == i) { // Check if i is prime
  13. for (int j = i; j <= n; j += i) {
  14. phi[j] = phi[j] / i * (i - 1);
  15. }
  16. }
  17. }
  18. }
  19.  
  20. // Function to find and display numbers that are relatively prime to each number up to n
  21. void displayRelativelyPrimeNumbers(int n, const vector<int>& phi) {
  22. for (int i = 1; i <= n; i++) {
  23. cout << "phi(" << i << ") = " << phi[i] << ": Relatively prime numbers are: ";
  24. for (int j = 1; j < i; j++) {
  25. if (__gcd(i, j) == 1) {
  26. cout << j << " ";
  27. }
  28. }
  29. cout << endl;
  30. }
  31. }
  32.  
  33. int main() {
  34. int n;
  35. cout << "Enter the value of n: ";
  36. cin >> n;
  37.  
  38. vector<int> phi(n + 1);
  39. computeTotient(n, phi);
  40.  
  41. displayRelativelyPrimeNumbers(n, phi);
  42.  
  43. return 0;
  44. }
Success #stdin #stdout 0.01s 5280KB
stdin
12
stdout
Enter the value of n: phi(1) = 1: Relatively prime numbers are: 
phi(2) = 1: Relatively prime numbers are: 1 
phi(3) = 2: Relatively prime numbers are: 1 2 
phi(4) = 2: Relatively prime numbers are: 1 3 
phi(5) = 4: Relatively prime numbers are: 1 2 3 4 
phi(6) = 2: Relatively prime numbers are: 1 5 
phi(7) = 6: Relatively prime numbers are: 1 2 3 4 5 6 
phi(8) = 4: Relatively prime numbers are: 1 3 5 7 
phi(9) = 6: Relatively prime numbers are: 1 2 4 5 7 8 
phi(10) = 4: Relatively prime numbers are: 1 3 7 9 
phi(11) = 10: Relatively prime numbers are: 1 2 3 4 5 6 7 8 9 10 
phi(12) = 4: Relatively prime numbers are: 1 5 7 11