そろそろC++の復習でもしようというのとVC10(C++0x)の機能の予習を兼ねてProject Eulerの問題を解いていく。
http://projecteuler.net/index.php?section=problems&id=1
何も考えずに書くとこんな感じだろうか。
#include <iostream> using namespace std; const int N = 1000; int main() { int s = 0; for(int n = 1; n < N; n++) { if(n % 3 == 0 || n % 5 == 0) { s += n; } } cout << s << endl; }
しかし、Pythonなら、
N = 1000 print sum(filter(lambda n: n % 3 == 0 or n % 5 == 0, xrange(1, N)))
Haskellなら
n = 1000 main = print (sum [ k | k <- [1..n-1], mod k 3 == 0 || mod k 5 == 0 ])