Advertisement
Farjana_akter

Untitled

Aug 7th, 2020
52
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.42 KB | None | 0 0
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. typedef long long int ll;
  4.  
  5. bool mark[10000007]= {false};
  6. ll isprime[10000007],psize=0;
  7.  
  8. ll fact[10000007],sz=0;
  9.  
  10. void sieve()
  11. {
  12. mark[0]=true;
  13. mark[1]=true;
  14. for(ll i=2; i*i<=10000000; i++)
  15. {
  16. if(mark[i]==false)
  17. {
  18. for(ll j=i*i; j<=10000000; j+=i)
  19. {
  20. mark[j]=true;
  21. }
  22. }
  23. }
  24. for(ll i=2; i<=10000000; i++)
  25. {
  26. if(mark[i]==false)
  27. isprime[psize++]=i;
  28. }
  29. }
  30.  
  31.  
  32. ll countfact(ll n)
  33. {
  34. ll cnt=0;
  35. for(ll i=0; i<psize && isprime[i]*isprime[i]<=n; i++)
  36. {
  37. if(n%isprime[i]==0)
  38. {
  39. while(n%isprime[i]==0)
  40. {
  41. cnt++;
  42. n/=isprime[i];
  43. }
  44. }
  45. }
  46. if(n>1)
  47. cnt++;
  48. return cnt;
  49. }
  50.  
  51.  
  52. void precal()
  53. {
  54. fact[0]=0;
  55. fact[1]=1;
  56. fact[2]=1;
  57. fact[3]=2;
  58. for(ll i=4; i<10000000; i++)
  59. {
  60. fact[i]=fact[i-1]+countfact(i);
  61. // cout<<fact[i]<<endl;
  62. if(fact[i]>10000005)
  63. {
  64. sz=i;
  65. break;
  66. }
  67. }
  68. }
  69.  
  70.  
  71. int main()
  72. {
  73. sieve();
  74. precal();
  75. ll t,i,j,k,n;
  76. scanf("%lld",&t);
  77. while(t--)
  78. {
  79. scanf("%lld",&n);
  80. //cout<<sz<<endl;
  81. ll res=upper_bound(fact,fact+2703664,n)-fact;
  82. cout<<res<<endl;
  83. }
  84. return 0;
  85.  
  86. }
  87.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement