--- id: 5900f3761000cf542c50fe89 title: '問題 10: 素数の和' challengeType: 5 forumTopicId: 301723 dashedName: problem-10-summation-of-primes --- # --description-- 10 より小さい素数の和は、2 + 3 + 5 + 7 = 17 です。 `n` より小さい素数の総和を求めなさい。 # --hints-- `primeSummation(17)` は数値を返す必要があります。 ```js assert(typeof primeSummation(17) === 'number'); ``` `primeSummation(17)` は 41 を返す必要があります。 ```js assert.strictEqual(primeSummation(17), 41); ``` `primeSummation(2001)` は 277050 を返す必要があります。 ```js assert.strictEqual(primeSummation(2001), 277050); ``` `primeSummation(140759)` は 873608362 を返す必要があります。 ```js assert.strictEqual(primeSummation(140759), 873608362); ``` `primeSummation(2000000)` は 142913828922 を返す必要があります。 ```js assert.strictEqual(primeSummation(2000000), 142913828922); ``` # --seed-- ## --seed-contents-- ```js function primeSummation(n) { return true; } primeSummation(2000000); ``` # --solutions-- ```js function primeSummation(n) { if (n < 3) { return 0 }; let nums = [0, 0, 2]; for (let i = 3; i < n; i += 2){ nums.push(i); nums.push(0); } let sum = 2; for (let i = 3; i < n; i += 2){ if (nums[i] !== 0){ sum += nums[i]; for (let j = i*i; j < n; j += i){ nums[j] = 0; } } } return sum; } ```