75 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			75 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| ---
 | |
| id: 597f1e7fbc206f0e9ba95dc4
 | |
| title: Factors of an integer
 | |
| challengeType: 5
 | |
| forumTopicId: 302265
 | |
| dashedName: factors-of-an-integer
 | |
| ---
 | |
| 
 | |
| # --description--
 | |
| 
 | |
| Write a function that returns the factors of a positive integer as an array.
 | |
| 
 | |
| These factors are the positive integers by which the number being factored can be divided to yield a positive integer result.
 | |
| 
 | |
| # --hints--
 | |
| 
 | |
| `factors` should be a function.
 | |
| 
 | |
| ```js
 | |
| assert(typeof factors === 'function');
 | |
| ```
 | |
| 
 | |
| `factors(45)` should return `[1,3,5,9,15,45]`.
 | |
| 
 | |
| ```js
 | |
| assert.deepEqual(factors(45), ans[0]);
 | |
| ```
 | |
| 
 | |
| `factors(53)` should return `[1,53]`.
 | |
| 
 | |
| ```js
 | |
| assert.deepEqual(factors(53), ans[1]);
 | |
| ```
 | |
| 
 | |
| `factors(64)` should return `[1,2,4,8,16,32,64]`.
 | |
| 
 | |
| ```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;
 | |
| }
 | |
| ```
 |