Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- function getArrayOfPrimeNumbers(number) { // здесь мы получаем для каждого числа массив простых чисел, на которые он гипотетически может быть разложен.
- let arrayOfPrimeNumbers = [];
- if (number == 2) return [2];
- for (let i = 2; i < number/2+1; i++ ) {
- let isPrimeNumber = true;
- for (let j = 2; j < i/2+1; j++) {
- if(i%j == 0) {isPrimeNumber = false; break}
- }
- if(isPrimeNumber) arrayOfPrimeNumbers.push(i);
- }
- return arrayOfPrimeNumbers;
- }
- function splittingByPrimeNumbers(number) {
- let appropriatePrimeNumbersArray = getArrayOfPrimeNumbers(number);
- let primeMultipliers = [];
- for (let i = 0; true; i = i) {
- if ((number % appropriatePrimeNumbersArray[i]) == 0 && (number != 1)) {
- primeMultipliers.push(appropriatePrimeNumbersArray[i]);
- number /= appropriatePrimeNumbersArray[i];
- if (number == 1) break;
- }
- else {
- i++;
- if (i == appropriatePrimeNumbersArray.length) {primeMultipliers.push(number); break};
- }
- }
- //console.log(primeMultipliers);
- return primeMultipliers;
- }
- function checkRepeatingPrimeMultipliers(arr) {
- let result = {};
- arr.forEach(item => {
- if (result[item] == undefined) result[item] = 1
- else result[item]++
- });
- //console.log(result);
- return result;
- }
- function conjunctionPrimeMultipliersObjects(arr) {
- let temp = [];
- arr.forEach(item => temp.push(splittingByPrimeNumbers(item)));
- let result = [];
- temp.forEach(item => result.push(checkRepeatingPrimeMultipliers(item)))
- return result;
- }
- function findMaxPrimeMultiplier(arr) {
- let result = [];
- arr.forEach(item => result.push(...Object.keys(item)));
- console.log(result);
- return findMaxValueOfOneDimensionalStringArr(result);
- }
- function findMaxValueOfOneDimensionalStringArr(arr) {
- let tempNumberArr = [];
- arr.forEach(item => tempNumberArr.push(parseInt(item)));
- let max = tempNumberArr[0];
- //console.log(tempNumberArr);
- for (let i = 1; i < tempNumberArr.length; i++) {
- if(tempNumberArr[i] > max) max = arr[i];
- }
- return max;
- }
- function sortOneDimensionalStringArr(arr) {
- let result = [];
- arr.forEach(item => result.push(...Object.keys(item)));
- let temp = [];
- result.forEach(item => temp.push(parseInt(item)));
- temp.sort((a,b) => a - b);
- //console.log(temp);
- //console.log(deleteRepeating(temp));
- return deleteRepeating(temp);
- }
- function deleteRepeating(arr) {
- for (let i=0; i < arr.length - 1; i++) {
- if (arr[i] == arr[i + 1]) arr[i] = '';
- }
- let result = [];
- for (let i=0; i < arr.length; i++) {
- if (arr[i] != '') result.push(arr[i])
- }
- return result;
- }
- function findMaxNumberOfThisMultiplier(number, arrWithObjs) {
- let max = 0;
- arrWithObjs.forEach(item => {
- if (item.hasOwnProperty(number)) {
- if (item[number] > max) max = item[number]
- }
- })
- return max;
- }
- function pow(x,y) {
- let result = x;
- for (let i = 0; i < y - 1; i++) {
- result *= x;
- }
- return result;
- }
- function smallestCommons(arr) {
- if(arr[0] > arr[1]) [arr[0], arr[1]] = [arr[1], arr[0]];
- let arrayOfNumbers = [];
- for (let i = arr[0]; i <= arr[1]; i++) {
- if (i != 1 && i != 0) arrayOfNumbers.push(i);
- }
- let arrayOfNumbersPrimeMultipliersObjects = conjunctionPrimeMultipliersObjects(arrayOfNumbers);
- console.log(arrayOfNumbersPrimeMultipliersObjects);
- let primeMultiplierList = sortOneDimensionalStringArr(arrayOfNumbersPrimeMultipliersObjects);
- let objectWithMultipliersAndThoseMax = {};
- primeMultiplierList.forEach(item => {
- objectWithMultipliersAndThoseMax[item] = findMaxNumberOfThisMultiplier(item, arrayOfNumbersPrimeMultipliersObjects)
- });
- console.log(objectWithMultipliersAndThoseMax);
- let temp = [...Object.keys(objectWithMultipliersAndThoseMax)].map(item => parseInt(item));
- console.log(temp);
- let finalResult = 1;
- temp.forEach(item => {
- finalResult *= pow(item, objectWithMultipliersAndThoseMax[item]);
- })
- return finalResult;
- //temp.forEach(item => {
- //return findMaxPrimeMultiplier(arrayOfNumbersPrimeMultipliersObjects);
- }
- console.log(smallestCommons([1,25]));
- // function smallestCommons(arr) {
- // if(arr[0] > arr[1]) [arr[0], arr[1]] = [arr[1], arr[0]]
- // let temp = []; //массив чисел, среди которых надо найти НОК.
- // for (let i = arr[0]; i <= arr[1]; i++) {
- // temp.push(i)
- // }
- // console.log(temp);
- // }
- //findMaxPrimeMultiplier([{2: 2, 3: 3})
- //console.log(getArrayOfPrimeNumbers(1))
- //console.log(getArrayOfPrimeNumbers(2))
- //console.log(getArrayOfPrimeNumbers(3))
- //console.log(splittingByPrimeNumbers(2));
- //console.log(getArrayOfPrimeNumbers(35));
- //splittingByPrimeNumbers(91);
- //checkRepeatingPrimeMultipliers([2,2,2,2,7,11])
- // создаём массив чисел наименьшее общее кратное которых надо посчитать
- // создаём массив простых чисел самое большое из которых меньше самого большого числа в предоставленном массиве
- // создаём для каждого числа массив его простых множителей
- // вот у нас эн массивов, что делать дальше?
- // ищем самое большое простое число из всех этих массивов
- // смотрим от малых простых чисел к большим, сколько раз оно встречается. В общее произведение выкидываем это число, возведённое в степень, где оно появляется больше всего раз.
Advertisement
Add Comment
Please, Sign In to add comment