⊗jsSpOtSM 281 of 294 menu

JavaScript-de ýatdaşlyk arkaly tizligi gowulandyrmak

Operativ ýatdaşlygy çäkde ýitirmek bilen işleýiş tizligini ýokarlandyryp bolýan ýagdaýlar bolýar.

Mysal üçin seredeli. Aşakdaky kod bellenen aralykdaky dost sanlary tapýar:

console.log(getFriendly(9000)); function getFriendly(range) { let res = []; for (let i = 1; i <= range; i++) { for (let j = 1; j < range; j++) { if (isFriendly(i, j)) { res.push([i, j]); } } } return res; } function isFriendly(num1, num2) { let sum1 = getSum(getOwnDivisors(num1)); let sum2 = getSum(getOwnDivisors(num2)); return sum1 == num2 && sum2 == num1; } function getOwnDivisors(num) { let res = []; for (let i = 1; i < num; i++) { if (num % i === 0) { res.push(i); } } return res; } function getSum(arr) { let sum = 0; for (let elem of arr) { sum += elem; } return sum; }

Ýokarda görkezilen kod optimal däl. Ol köp sanly amallary ýerine ýetirýär we 9000 çenli bellenen aralykda brauzeriň sahypasy ýöne geler.

Bu kodyň meselesi şonda ýatýar, biz her bir san üçin onuň bölüjileriniň jemini gaty köp gezek, barlanýan sanlaryň umumy sany çemesi gezek hasaplaýarys. Bu bizim ýagdaýymyzda isleýän sanymyz üçin onuň bölüjileriniň jemi 9000 gezek tapylar. Hemmesiniň ýöne gelmegine gaýgy ýok.

Gowulandyrmaga başlaýaly. Ilki bilen, bölüjileri sanawda saklamazdan, göni bölüjileriň jemini hasaplaýan funksiýa ýasaýarys:

function getOwnDivisorsSum(num) { let sum = 0; for (let i = 1; i < num; i++) { if (num % i === 0) { sum += i; } } return sum; }

Indi operativ ýatdaşlygy çäkde ýitirmek wagty geldi. Bellenen aralykdaky hemme sanlaryň bölüjileriniň jemini öz gezeginde bir gezek hasaplap, olary sanawda saklaýan funksiýa ýasaýarys.

Funksiýamyzyň netijesi bolup, içinde açar bolup san (bir azajyk kiçi), bahasy bolsa onuň bölüjileriniň jemi bolan sanaw bolup bolar. Funksiýamyzy amala aşyryň:

function getAllSum(range) { let arr = []; for (let i = 1; i <= range; i++) { arr.push(getOwnDivisorsSum(i)); } return arr; }

Indi dostlygy barlamak üçin biz her gezek sanlaryň bölüjileriniň jemini hasaplamaly däl, diňe eýýäm hasaplanan jemi sanawdan alyp bileris:

function getFriendly(range) { let sums = getAllSum(range); // [1, 2, 6...] let res = []; for (let i = 0; i < sums.length; i++) { for (let j = i; j < sums.length; j++) { let sum1 = sums[i]; let sum2 = sums[j]; let num1 = i + 1; let num2 = j + 1; if (num1 == sum2 && num2 == sum1) { res.push([num1, num2]); } } } return res; }

Hemmesini bir ýere jemläp, aşakdaky kody alyarys:

console.log(getFriendly(9000)); function getFriendly(range) { let sums = getAllSum(range); let res = []; for (let i = 0; i < sums.length; i++) { for (let j = i; j < sums.length; j++) { let sum1 = sums[i]; let sum2 = sums[j]; let num1 = i + 1; let num2 = j + 1; if (num1 == sum2 && num2 == sum1) { res.push([num1, num2]); } } } return res; } function getAllSum(range) { let arr = []; for (let i = 1; i <= range; i++) { arr.push(getOwnDivisorsSum(i)); } return arr; } function getOwnDivisorsSum(num) { let sum = 0; for (let i = 1; i < num; i++) { if (num % i === 0) { sum += i; } } return sum; }

Aşakdaky kod bellenen aralykdaky özara ýönekeý sanlary tapýar. Ony gowulandyryň:

console.log(getRelativelyPrime(10000)); function getRelativelyPrime(range) { let res = []; for (let i = 2; i <= range; i++) { for (let j = 2; j < range; j++) { if (isRelativelyPrime(i, j)) { res.push([i, j]); } } } return res; } function isRelativelyPrime(num1, num2) { let arr1 = getDivisors(num1); let arr2 = getDivisors(num2); let int = getIntersect(arr1, arr2); if (int.length === 0) { return true; } else { return false; } } function getIntersect(arr1, arr2) { let result = []; for (let elem of arr1) { if (arr2.includes(elem)) { result.push(elem); } } return result; } function getDivisors(num) { let res = []; for (let i = 2; i <= num; i++) { if (num % i === 0) { res.push(i); } } return res; }
Türkmen
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkçeЎзбекOʻzbekTiếng Việt
Biz sahypanyň işlemegi, analitika we şahsyýetleşdirmek üçin cookie ulanýarys. Maglumatlaryň işlenişi Gizlinlik syýasaty boýunça amala aşyrylýar.
hemmesini kabul et sazlamak ret et