Sum multiples of 3 and 5: Difference between revisions

Added faster C++ solution
(→‎{{header|Perl}}: Update to use v5.20 signatures and syntax; make the style consistent between the two solutions.)
(Added faster C++ solution)
Line 811:
</lang>
{{out}}
<pre>
Sum is 233168 for n = 1000
</pre>
 
===Fast version with arbitrary precision===
{{libheader|Boost}}
<lang cpp>#include <iostream>
#include <boost/multiprecision/cpp_int.hpp>
 
template <typename T> T sum_multiples(T n, T m) {
n -= T(1);
n -= n % m;
return (n / m) * (m + n) / T(2);
}
 
template <typename T> T sum35(T n) {
return sum_multiples(n, T(3)) + sum_multiples(n, T(5)) -
sum_multiples(n, T(15));
}
 
int main() {
using big_int = boost::multiprecision::cpp_int;
 
std::cout << sum35(1000) << '\n';
std::cout << sum35(big_int("100000000000000000000")) << '\n';
}</lang>
 
{{out}}
<pre>
233168
2333333333333333333316666666666666666668
</pre>
 
=={{header|Clojure}}==
1,777

edits