Advertisement
Guest User

Untitled

a guest
Sep 2nd, 2014
180
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.36 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <functional>
  3. #include <bitset>
  4. #include <math.h>
  5. #include <time.h>
  6. #include <stdlib.h>
  7. #include <algorithm>
  8. #include <iostream>
  9. #include <string>
  10. #include <vector>
  11. #include <set>
  12. #include <map>
  13. #include <sstream>
  14. #include <queue>
  15. #include <string.h>
  16. #include <numeric>
  17. using namespace std;
  18.  
  19. typedef vector<int> vi;
  20. typedef vector<vi> vvi;
  21. typedef pair<int,int> ii;
  22. typedef long long ll;
  23. #define sz(a) int((a).size())
  24. #define pb push_back
  25. #define all(c) (c).begin(),(c).end()
  26. #define tr(c,i) for(typeof((c).begin() i = (c).begin(); i != (c).end(); i++)
  27. #define present(c,x) ((c).find(x) != (c).end())
  28. #define cpresent(c,x) (find(all(c),x) != (c).end())
  29.  
  30. vi primes;
  31. bool prime[1000010];
  32. void sieve (ll N)
  33. {
  34. memset(prime,1,sizeof prime);
  35. prime[0] = prime[1] = 1;
  36. for (ll i=2 ; i<=N ; i++)
  37. {
  38. if (!prime[i]) continue;
  39. for (ll j = i*i ; j<=N ; j+=i)
  40. {
  41. prime[j] = 0;
  42. }
  43. primes.pb(i);
  44. }
  45. }
  46.  
  47. ll calc (ll N)
  48. {
  49. ll ret=0;
  50. for (int i=0 ; i<sz(primes) ; i++)
  51. {
  52. if (primes[i] > N) break;
  53. ll q = primes[i];
  54. while (q <= N)
  55. {
  56. ret += floor(((N-q)*1.0)/q) + 1;
  57. q*=primes[i];
  58. }
  59. }
  60. return ret;
  61. }
  62.  
  63. int main ()
  64. {
  65. //freopen("*.in","r",stdin);
  66. //freopen("*.out","w",stdout);
  67.  
  68. sieve(1000000);
  69. int N;
  70. while (cin >> N)
  71. {
  72. cout << calc(N) << endl;
  73. }
  74. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement