Здравейте!
При решението на задачата описана по-долу излиза Memory Limit Exceeded и получавам 40 точки.
Бихте ли ме насочили?
Write a program that finds all prime numbers in the range 1 ... N. Use the Sieve of Eratosthenes algorithm. The program should print the biggest prime number which is <= N .
Здравей, проблемът ти се получава от първият for(){} loop на 5ти ред, накратко той минава през абсолютно всички числа от 2 до n-1 и ако числото например 926204 той ще направи 926201 цикъла погледнидали инадругиместаможедасеполучитака.Вместотова използвайlet arr =new Array(n);(създава array сn елементавсичкипразни,пробвайarray.lenght()задасеувериш)иследтоваarr.fill(true)(това запълвавслучаявсички елементи с true иведнагаслед променямеarr[0]иarr[1]вfalse).Виждам,чеивследващиятfor(){}loop сголямичисласеполучаватмногосметки. Веселипразници!
Погледнах го отново не съм прочел правилно мислех че проблемът е Time Limit Exeeded (често ми се случва и по навик). Проблемът е от arr, създават всички елементи от 2 до n и това пълни памета. Не е твоята логика кадето е грешна а самата Sieve of Eratosthenes която не е много за тази задача след като изисква създаването на тези елементи в arr, но judge има лимит на памета и там се получава проблемът.
Write a program that finds all prime numbers in the range 1 ... N. Use the Sieve of Eratosthenes algorithm. The program should print the biggest prime number which is <= N .
Привет, наистина условието е написано така, но реално се иска само едно от тези числа, затова започването от края е разумно според мен и ще даде точно това, което се иска в задачата.