chore(i18n,chn): manually downloaded curriculum (#42858)

This commit is contained in:
Mrugesh Mohapatra
2021-07-15 13:04:11 +05:30
committed by GitHub
parent eef1805fe6
commit 7eb0630f2d
248 changed files with 5645 additions and 2149 deletions

View File

@ -15,23 +15,41 @@ It is possible to write ten as the sum of primes in exactly five different ways:
5 + 5<br>
5 + 3 + 2<br>
3 + 3 + 2 + 2<br>
2 + 2 + 2 + 2 + 2<br>
2 + 2 + 2 + 2 + 2<br><br>
</div>
What is the first value which can be written as the sum of primes in over five thousand different ways?
What is the first value which can be written as the sum of primes in over `n` ways?
# --hints--
`primeSummations()` should return a number.
`primeSummations(5)` should return a number.
```js
assert(typeof primeSummations() === 'number');
assert(typeof primeSummations(5) === 'number');
```
`primeSummations()` should return 71.
`primeSummations(5)` should return `11`.
```js
assert.strictEqual(primeSummations(), 71);
assert.strictEqual(primeSummations(5), 11);
```
`primeSummations(100)` should return `31`.
```js
assert.strictEqual(primeSummations(100), 31);
```
`primeSummations(1000)` should return `53`.
```js
assert.strictEqual(primeSummations(1000), 53);
```
`primeSummations(5000)` should return `71`.
```js
assert.strictEqual(primeSummations(5000), 71);
```
# --seed--
@ -39,16 +57,54 @@ assert.strictEqual(primeSummations(), 71);
## --seed-contents--
```js
function primeSummations() {
function primeSummations(n) {
return true;
}
primeSummations();
primeSummations(5);
```
# --solutions--
```js
// solution required
function primeSummations(n) {
function getSievePrimes(max) {
const primesMap = new Array(max).fill(true);
primesMap[0] = false;
primesMap[1] = false;
const primes = [];
for (let i = 2; i < max; i += 2) {
if (primesMap[i]) {
primes.push(i);
for (let j = i * i; j < max; j += i) {
primesMap[j] = false;
}
}
if (i === 2) {
i = 1;
}
}
return primes;
}
const MAX_NUMBER = 100;
const primes = getSievePrimes(MAX_NUMBER);
for (let curNumber = 2; curNumber < MAX_NUMBER; curNumber++) {
const combinations = new Array(curNumber + 1).fill(0);
combinations[0] = 1;
for (let i = 0; i < primes.length; i++) {
for (let j = primes[i]; j <= curNumber; j++) {
combinations[j] += combinations[j - primes[i]];
}
}
if (combinations[curNumber] > n) {
return curNumber;
}
}
return false;
}
```