Guest User

Untitled

a guest
May 30th, 2021
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.08 KB | None | 0 0
  1. function getArrayOfPrimeNumbers(number) { // здесь мы получаем для каждого числа массив простых чисел, на которые он гипотетически может быть разложен.
  2. let arrayOfPrimeNumbers = [];
  3. if (number == 2) return [2];
  4. for (let i = 2; i < number/2+1; i++ ) {
  5.  
  6. let isPrimeNumber = true;
  7. for (let j = 2; j < i/2+1; j++) {
  8. if(i%j == 0) {isPrimeNumber = false; break}
  9. }
  10. if(isPrimeNumber) arrayOfPrimeNumbers.push(i);
  11. }
  12. return arrayOfPrimeNumbers;
  13. }
  14.  
  15. function splittingByPrimeNumbers(number) {
  16. let appropriatePrimeNumbersArray = getArrayOfPrimeNumbers(number);
  17. let primeMultipliers = [];
  18. for (let i = 0; true; i = i) {
  19. if ((number % appropriatePrimeNumbersArray[i]) == 0 && (number != 1)) {
  20. primeMultipliers.push(appropriatePrimeNumbersArray[i]);
  21. number /= appropriatePrimeNumbersArray[i];
  22. if (number == 1) break;
  23. }
  24. else {
  25. i++;
  26. if (i == appropriatePrimeNumbersArray.length) {primeMultipliers.push(number); break};
  27. }
  28. }
  29. //console.log(primeMultipliers);
  30. return primeMultipliers;
  31. }
  32.  
  33. function checkRepeatingPrimeMultipliers(arr) {
  34. let result = {};
  35. arr.forEach(item => {
  36. if (result[item] == undefined) result[item] = 1
  37. else result[item]++
  38. });
  39. //console.log(result);
  40. return result;
  41. }
  42.  
  43. function conjunctionPrimeMultipliersObjects(arr) {
  44. let temp = [];
  45. arr.forEach(item => temp.push(splittingByPrimeNumbers(item)));
  46. let result = [];
  47. temp.forEach(item => result.push(checkRepeatingPrimeMultipliers(item)))
  48. return result;
  49. }
  50.  
  51. function findMaxPrimeMultiplier(arr) {
  52. let result = [];
  53. arr.forEach(item => result.push(...Object.keys(item)));
  54. console.log(result);
  55. return findMaxValueOfOneDimensionalStringArr(result);
  56. }
  57.  
  58. function findMaxValueOfOneDimensionalStringArr(arr) {
  59. let tempNumberArr = [];
  60. arr.forEach(item => tempNumberArr.push(parseInt(item)));
  61. let max = tempNumberArr[0];
  62. //console.log(tempNumberArr);
  63. for (let i = 1; i < tempNumberArr.length; i++) {
  64. if(tempNumberArr[i] > max) max = arr[i];
  65. }
  66. return max;
  67. }
  68.  
  69. function sortOneDimensionalStringArr(arr) {
  70. let result = [];
  71. arr.forEach(item => result.push(...Object.keys(item)));
  72. let temp = [];
  73. result.forEach(item => temp.push(parseInt(item)));
  74. temp.sort((a,b) => a - b);
  75. //console.log(temp);
  76. //console.log(deleteRepeating(temp));
  77. return deleteRepeating(temp);
  78. }
  79.  
  80. function deleteRepeating(arr) {
  81. for (let i=0; i < arr.length - 1; i++) {
  82. if (arr[i] == arr[i + 1]) arr[i] = '';
  83. }
  84. let result = [];
  85. for (let i=0; i < arr.length; i++) {
  86. if (arr[i] != '') result.push(arr[i])
  87. }
  88. return result;
  89. }
  90.  
  91. function findMaxNumberOfThisMultiplier(number, arrWithObjs) {
  92. let max = 0;
  93. arrWithObjs.forEach(item => {
  94. if (item.hasOwnProperty(number)) {
  95. if (item[number] > max) max = item[number]
  96. }
  97. })
  98. return max;
  99. }
  100.  
  101. function pow(x,y) {
  102. let result = x;
  103. for (let i = 0; i < y - 1; i++) {
  104. result *= x;
  105. }
  106. return result;
  107.  
  108. }
  109.  
  110. function smallestCommons(arr) {
  111. if(arr[0] > arr[1]) [arr[0], arr[1]] = [arr[1], arr[0]];
  112. let arrayOfNumbers = [];
  113. for (let i = arr[0]; i <= arr[1]; i++) {
  114. if (i != 1 && i != 0) arrayOfNumbers.push(i);
  115. }
  116. let arrayOfNumbersPrimeMultipliersObjects = conjunctionPrimeMultipliersObjects(arrayOfNumbers);
  117. console.log(arrayOfNumbersPrimeMultipliersObjects);
  118. let primeMultiplierList = sortOneDimensionalStringArr(arrayOfNumbersPrimeMultipliersObjects);
  119. let objectWithMultipliersAndThoseMax = {};
  120. primeMultiplierList.forEach(item => {
  121. objectWithMultipliersAndThoseMax[item] = findMaxNumberOfThisMultiplier(item, arrayOfNumbersPrimeMultipliersObjects)
  122. });
  123. console.log(objectWithMultipliersAndThoseMax);
  124. let temp = [...Object.keys(objectWithMultipliersAndThoseMax)].map(item => parseInt(item));
  125. console.log(temp);
  126. let finalResult = 1;
  127. temp.forEach(item => {
  128. finalResult *= pow(item, objectWithMultipliersAndThoseMax[item]);
  129. })
  130. return finalResult;
  131. //temp.forEach(item => {
  132.  
  133. //return findMaxPrimeMultiplier(arrayOfNumbersPrimeMultipliersObjects);
  134. }
  135.  
  136. console.log(smallestCommons([1,25]));
  137.  
  138. // function smallestCommons(arr) {
  139. // if(arr[0] > arr[1]) [arr[0], arr[1]] = [arr[1], arr[0]]
  140. // let temp = []; //массив чисел, среди которых надо найти НОК.
  141. // for (let i = arr[0]; i <= arr[1]; i++) {
  142. // temp.push(i)
  143. // }
  144. // console.log(temp);
  145. // }
  146.  
  147.  
  148. //findMaxPrimeMultiplier([{2: 2, 3: 3})
  149.  
  150. //console.log(getArrayOfPrimeNumbers(1))
  151. //console.log(getArrayOfPrimeNumbers(2))
  152. //console.log(getArrayOfPrimeNumbers(3))
  153. //console.log(splittingByPrimeNumbers(2));
  154. //console.log(getArrayOfPrimeNumbers(35));
  155. //splittingByPrimeNumbers(91);
  156. //checkRepeatingPrimeMultipliers([2,2,2,2,7,11])
  157.  
  158.  
  159. // создаём массив чисел наименьшее общее кратное которых надо посчитать
  160. // создаём массив простых чисел самое большое из которых меньше самого большого числа в предоставленном массиве
  161. // создаём для каждого числа массив его простых множителей
  162. // вот у нас эн массивов, что делать дальше?
  163. // ищем самое большое простое число из всех этих массивов
  164. // смотрим от малых простых чисел к большим, сколько раз оно встречается. В общее произведение выкидываем это число, возведённое в степень, где оно появляется больше всего раз.
  165.  
  166.  
Advertisement
Add Comment
Please, Sign In to add comment