Advertisement
Guest User

Untitled

a guest
Mar 23rd, 2019
66
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.94 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2.  
  3. using namespace std;
  4.  
  5. long long mul(long long a, long long b, long long m){
  6. if(b==1)
  7. return a;
  8. if(b%2==0){
  9. long long t = mul(a, b/2, m);
  10. return (2 * t) % m;
  11. }
  12. return (mul(a, b-1, m) + a) % m;
  13. }
  14.  
  15. long long pows(long long a, long long b, long long m){
  16. if(b==0)
  17. return 1;
  18. if(b%2==0){
  19. long long t = pows(a, b/2, m);
  20. return mul(t , t, m) % m;
  21. }
  22. return ( mul(pows(a, b-1, m) , a, m)) % m;
  23. }
  24.  
  25. long long gcd(long long a, long long b){
  26. if(b==0)
  27. return a;
  28. return gcd(b, a%b);
  29. }
  30.  
  31. bool Prime(long long x){
  32. if(x == 2)
  33. return true;
  34. srand(time(NULL));
  35. for(int i=0;i<100;i++){
  36. long long a = (rand() % (x - 2)) + 2;
  37. if (gcd(a, x) != 1)
  38. return false;
  39. if( pows(a, x-1, x) != 1)
  40. return false;
  41. }
  42. return true;
  43. }
  44.  
  45. int main()
  46. {
  47. long long n;
  48. cin >> n;
  49. if(Prime(n))
  50. cout << "YES" << endl;
  51. else
  52. cout << "NO" << endl;
  53. return 0;
  54. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement