summary refs log tree commit diff stats
path: root/c/sum-of-multiples/src/sum_of_multiples.c
diff options
context:
space:
mode:
Diffstat (limited to 'c/sum-of-multiples/src/sum_of_multiples.c')
-rw-r--r--c/sum-of-multiples/src/sum_of_multiples.c17
1 files changed, 17 insertions, 0 deletions
diff --git a/c/sum-of-multiples/src/sum_of_multiples.c b/c/sum-of-multiples/src/sum_of_multiples.c
new file mode 100644
index 0000000..9ad1eb1
--- /dev/null
+++ b/c/sum-of-multiples/src/sum_of_multiples.c
@@ -0,0 +1,17 @@
+#include "sum_of_multiples.h"
+#include <stdlib.h>
+#include <stdbool.h>
+
+unsigned int sum(const unsigned int *factors,
+                 const size_t number_of_factors, const unsigned int limit) {
+    unsigned int total = 0;
+    bool *seen = calloc(limit, sizeof(*seen));
+    for (size_t idx = 0; idx < number_of_factors; idx++)
+        for (size_t num = 0; num < limit; num++)
+            // factors[idx] shouldn't be 0. (% fails)
+            if (!seen[num] && factors[idx] && !(num % factors[idx])) {
+                total += num;
+                seen[num] = true;
+            }
+    return total;
+}
59188f4ef36472d3'>2fd6b1a ^
6753171 ^
a6c8162 ^

e10fc64 ^




5e92b61 ^
a6c8162 ^
5e92b61 ^
c050730 ^
e10fc64 ^
6753171 ^
c050730 ^

e10fc64 ^

7f76158 ^
e10fc64 ^
5e92b61 ^
a6c8162 ^

e10fc64 ^





a6c8162 ^






6753171 ^
6753171 ^





6753171 ^
6753171 ^


6753171 ^

6753171 ^






7f76158 ^
6753171 ^

e10fc64 ^
6753171 ^

6753171 ^


6753171 ^

6753171 ^


45d6723 ^
6753171 ^




6753171 ^
2fd6b1a ^

e539d23 ^
2fd6b1a ^



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
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95