2021-06-15 00:49:18 -07:00
---
id: 597f1e7fbc206f0e9ba95dc4
2021-08-09 17:35:35 +09:00
title: Fatores de um inteiro
2021-06-15 00:49:18 -07:00
challengeType: 5
forumTopicId: 302265
dashedName: factors-of-an-integer
---
# --description--
2021-08-09 17:35:35 +09:00
Escreva uma função que retorne os fatores de um inteiro positivo como um array.
2021-06-15 00:49:18 -07:00
2021-08-09 17:35:35 +09:00
Estes fatores são os inteiros positivos através dos quais o número que está sendo fatorado pode ser dividido para produzir um resultado inteiro e positivo.
2021-06-15 00:49:18 -07:00
# --hints--
2021-08-09 17:35:35 +09:00
`factors` deve ser uma função.
2021-06-15 00:49:18 -07:00
```js
assert(typeof factors === 'function');
```
2021-08-09 17:35:35 +09:00
`factors(45)` deve retornar `[1,3,5,9,15,45]` .
2021-06-15 00:49:18 -07:00
```js
assert.deepEqual(factors(45), ans[0]);
```
2021-08-09 17:35:35 +09:00
`factors(53)` deve retornar `[1,53]` .
2021-06-15 00:49:18 -07:00
```js
assert.deepEqual(factors(53), ans[1]);
```
2021-08-09 17:35:35 +09:00
`factors(64)` deve retornar `[1,2,4,8,16,32,64]` .
2021-06-15 00:49:18 -07:00
```js
assert.deepEqual(factors(64), ans[2]);
```
# --seed--
## --after-user-code--
```js
const ans=[[1,3,5,9,15,45],[1,53],[1,2,4,8,16,32,64]];
```
## --seed-contents--
```js
function factors(num) {
}
```
# --solutions--
```js
function factors(num)
{
let n_factors = [], i, sqr=Math.floor(Math.sqrt(num));
for (i = 1; i < =sqr ; i += 1)
if (num % i === 0)
{
n_factors.push(i);
if (num / i !== i)
n_factors.push(num / i);
}
n_factors.sort(function(a, b){return a - b;});
return n_factors;
}
```