Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<bits/stdc++.h>
- using namespace std;
- int factor[1000000 + 5];
- int cum_sum[1000000 + 5];
- bool isPrime(int n) {
- for(int i = 2; i*i <= n; i++) {
- if(n % i == 0) return false;
- }
- return true;
- }
- int main() {
- for(int i = 2, j=1; i <= 1000000; i*=2, j++) {
- factor[i] = j;
- }
- for(int i = 3; i <= 1000000; i++) {
- if(factor[i] == 0) {
- if(isPrime(i)) {
- factor[i] = 1;
- } else {
- if(i%2 == 0) {
- factor[i] = factor[i/2] + 1;
- } else {
- for(int j = 3; ;j+=2) {
- if(i % j == 0) {
- factor[i] = factor[i/j] + 1;
- break;
- }
- }
- }
- }
- }
- }
- cum_sum[2] = factor[2];
- for(int i=3; i<=1000000; i++) {
- cum_sum[i] = factor[i] + cum_sum[i-1];
- }
- int n;
- while (cin >> n) {
- cout << cum_sum[n] << endl;
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement