Advertisement
AlexAvram

#462 DivPrimMax

Aug 29th, 2023
14
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.05 KB | None | 0 0
  1. #include <iostream>
  2.  
  3. using namespace std;
  4. bool ciur[1000001];
  5. int nrprim[78900];
  6. void eratostene()
  7. {
  8. int i, j, k=0;
  9. ciur[0]=ciur[1]=1;
  10. for (i=2; i<=1e3; ++i)
  11. if(ciur[i]==0)
  12. {
  13. for (j=i*i; j<=1e6; j+=i)
  14. ciur[j]=1;
  15. }
  16. for (i=1; i<=1e6; ++i)
  17. if (!ciur[i])
  18. nrprim[++k]=i;
  19. }
  20. int nrdivprim(int a)
  21. {
  22. int f, k=0, res=0; bool p;
  23. while (a>1)
  24. {
  25. f=nrprim[++k], p=0;
  26. if (f==0)
  27. break;
  28. while (a%f==0)
  29. a/=f, p=1;
  30. if (p)
  31. ++res;
  32. if (f*f>a)
  33. f=a;
  34. }
  35. return res;
  36. }
  37. int main()
  38. {
  39. eratostene();
  40. int a, b, x;
  41. int nrdivprimmax=-1, nr;
  42. cin>>a>>b;
  43. nrdivprimmax=nrdivprim(a), nr=a;
  44. while (a!=b)
  45. {
  46. x=nrdivprim(b);
  47. if (x>nrdivprimmax)
  48. nrdivprimmax=x, nr=b;
  49. else if (x==nrdivprimmax && b>nr)
  50. nr=b;
  51. a=b;
  52. cin>>b;
  53. }
  54. cout<<nr<<" "<<nrdivprimmax;
  55. return 0;
  56. }
  57.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement