fork download
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3.  
  4. bool is_prime(int n) {
  5. long long r = 2;
  6. while (r*r <= n) {
  7. if (n % r == 0) return false;
  8. ++r;
  9. }
  10. return true;
  11. }
  12.  
  13. long long inv(int a, int b, int p) {
  14. long long r = 1;
  15. while (b) {
  16. if (b&1) r = (r * a)%p;
  17. a = (a * static_cast<long long>(a))%p;
  18. b >>= 1;
  19. }
  20. return r;
  21. }
  22.  
  23. int main() {
  24. int n; scanf("%d", &n);
  25. if (n <= 4) {
  26. puts("YES");
  27. if (n == 1) {
  28. puts("1");
  29. } else if (n == 2) {
  30. puts("1\n2");
  31. } else if (n == 3) {
  32. puts("1\n2\n3");
  33. } else {
  34. puts("1\n3\n2\n4");
  35. }
  36. return 0;
  37. }
  38. if (!is_prime(n)) {
  39. puts("NO"); return 0;
  40. }
  41. puts("YES");
  42. puts("1");
  43. for (int i = 2; i <= n; ++i) {
  44. int x = (i * static_cast<long long>(inv(i-1,n-2,n)))%n;
  45. printf("%d\n", x);
  46. }
  47. return 0;
  48. }
Success #stdin #stdout 0s 3344KB
stdin
7
stdout
YES
1
2
5
6
3
4
0