-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathProblem1.cpp
80 lines (68 loc) · 1.81 KB
/
Problem1.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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
/* Problem 1
Multiples of 3 and 5
If we list all the natural numbers below 10 that are multiples of 3 or 5,
we get 3, 5, 6 and 9. The sum of these multiples is 23.
Find the sum of all the multiples of 3 or 5 below 1000. */
#include <stdio.h>
#include <ctime>
int solution1(long int number)
{
long int sum = 0, i = 0;
for (i = 0; i < number; i++)
{
if ( i % 3 == 0 or i % 5 == 0)
{
sum = sum + i;
}
}
printf("Solution 1: %ld\n", sum);
return 0;
}
int solution2(long int number)
{
long int sum = 0, i = 0;
for (i = 0; i < number; i += 3)
{
sum = sum + i;
}
for (i = 0; i < number; i += 5)
{
sum = sum + i;
}
for (i = 0; i < number; i += 15)
{
sum = sum - i;
}
printf("Solution 2: %ld\n", sum);
return 0;
}
int solution3(long int number)
{
long int sum = 0;
number--;
sum = (3 + ( number - number % 3 )) * (( number - number % 3) / 3) / 2 +
(5 + ( number - number % 5 )) * (( number - number % 5) / 5) / 2 -
(15 + ( number - number % 15 )) * (( number - number % 15) / 15) / 2;
printf("Solution 3: %ld\n", sum);
return 0;
}
int main()
{
//long int number = 10000000000;
long int number = 1000;
long double startTime, diffTime;
printf("Sum of all the multiples of 3 or 5 below %ld is.\n", number);
startTime = time(0);
solution1(number);
diffTime = time(0) - startTime;
printf("Execution time in sec: %Lf\n", diffTime);
startTime = time(0);
solution2(number);
diffTime = time(0) - startTime;
printf("Execution time in sec: %Lf\n", diffTime);
startTime = time(0);
solution3(number);
diffTime = time(0) - startTime;
printf("Execution time in sec: %Lf\n", diffTime);
return 0;
}