Advertisement
a53

prim002_EU100

a53
Jan 1st, 2018
102
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.96 KB | None | 0 0
  1. #include <iostream>
  2. #define ULL unsigned long long int
  3. using namespace std;
  4.  
  5. bool prim(ULL n)
  6. {
  7. if(n%2==0ULL)
  8. return false;
  9. ULL d=3ULL;
  10. for(;d*d<=n;d+=2ULL)
  11. if(n%d==0)
  12. {
  13. return false;
  14. break;
  15. }
  16. if(d*d==n)
  17. return false;
  18. return true;
  19. }
  20.  
  21. int main()
  22. {
  23. ULL n;
  24. cin>>n;
  25. if(prim(n))
  26. {
  27. cout<<n;
  28. return 0;
  29. }
  30. ULL d=2;
  31. if(n%d==0)
  32. if(prim(n/d))
  33. {
  34. cout<<n/d;
  35. return 0;
  36. }
  37. for(d=3;d*d<n;d+=2)
  38. if(n%d==0ULL)
  39. if(prim(n/d))
  40. {
  41. cout<<n/d;
  42. return 0;
  43. }
  44. if(d*d==n&&prim(d))
  45. {
  46. cout<<d;
  47. return 0;
  48. }
  49. for(ULL i=d-1;d>1;--i)
  50. if(n%i==0)
  51. if(prim(i))
  52. {
  53. cout<<i;
  54. return 0;
  55. }
  56. return 0;
  57. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement