-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathSmallestCommonDenominator2.js
More file actions
104 lines (61 loc) · 2.29 KB
/
SmallestCommonDenominator2.js
File metadata and controls
104 lines (61 loc) · 2.29 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
function smallestCommons(arr) {
var topOfRange;
var bottomOfRange;
var currentLowestMultiple;
var isMultipleOfAllValues = false;
var rangeOfNumbersArray = [];
var primeFactorsArray;
if (arr[0] > arr[1]) {
topOfRange = arr[0];
bottomOfRange = arr[1];
} else {
topOfRange = arr[1];
bottomOfRange = arr[0];
}
for (var i = bottomOfRange; i <= topOfRange; i++) {
rangeOfNumbersArray.push(i);
}
console.log('range of numbers array: ' + rangeOfNumbersArray);
primeFactorsArray = primeGenerator(topOfRange / 2);
// console.log('array length: ' + primeFactorsArray.length);
var primeFactorObject = {};
primeFactorsArray.forEach(function (primeFactor) {
primeFactorObject[primeFactor] = 0;
});
console.log(primeFactorObject);
// given a number, factor it with prime array and create primeFactorObject, put in an array
factor()
function factor(numberToFactor) {
for (var i = primeFactorsArray.length - 1; i >= 0; i--) {
if (primeFactorsArray[i] < numberToFactor) {
if (numberToFactor % primeFactorsArray[i] === 0) {
primeFactorObject[primeFactorsArray[i]]++;
if (primeFactorsArray.includes(numberToFactor / primeFactorsArray[i])) {
primeFactorObject[numberToFactor / primeFactorsArray[i]]++;
} else {
var newPrimeFactorObject = factor(numberToFactor / primeFactorsArray[i]);
}
//add both primeFactorsArray[i] to OBJ and result, both with value
}
}
}
}
}
console.log(smallestCommons([1, 10]));
function primeGenerator(num) {
var primeArray = [];
var primePointer = 0;
for (var currentPrimeValue = 2; currentPrimeValue <= num; currentPrimeValue++) {
var isPrime = true;
var divisorCount = 0;
for (var divisor = currentPrimeValue; divisor > 0; divisor--) {
if (currentPrimeValue % divisor === 0) divisorCount++;
if (divisorCount > 2) {
isPrime = false;
break;
}
}
if (isPrime) primeArray.push(currentPrimeValue);
}
return primeArray;
}