-
Notifications
You must be signed in to change notification settings - Fork 0
/
main.cpp
40 lines (39 loc) · 1.33 KB
/
main.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#include <iostream>
#include <vector>
#include <numeric>
#include <ctime>
#include <iomanip>
#define LIMIT 99999
int main(int argc, char *argv[]) {
long int num = LIMIT;
std::vector<bool> isprime (num+1,true);
std::vector<long> digit_count (10,0);
std::cout << "Limit = " << num << std::endl;
clock_t start_time = clock();
for (long int i = 2; i <= num; ++i)
{
if (isprime[i]) {
digit_count[i%10]++;
for (size_t j = i+i; j <= num; j += i)
{
isprime[j] = false;
}
}
}
long int total = std::accumulate(digit_count.begin(),digit_count.end(),0);
std::cout << std::setw(6) << std::left <<
"Digit" << " : " << std::setw(12) << std::left <<
"Digit Count : " << std::setw(7) << std::right << std::fixed << std::setprecision(2) <<
"Percentage" <<
std::endl <<
"-------------------------------" << std::endl;
for (int i=0; i<10; ++i)
{
std::cout << std::setw(6) << std::left <<
i << " : " << std::setw(11) << std::left <<
digit_count[i] << " : " << std::setw(7) << std::right << std::fixed << std::setprecision(2) <<
digit_count[i]*100.0/total << "%" <<
std::endl;
}
std::cout << "Time taken : " << static_cast<double>((clock() - start_time))/CLOCKS_PER_SEC << " s";
}