
Nikolay
04.11.2018
11:34:16
*[list]
?

Tishka17
04.11.2018
11:35:19

Bushido
04.11.2018
11:35:35

Google

Tigran
04.11.2018
11:36:18
я тоже
но корень из лимита, очевидно, не изменяется по ходу алгоритма
вообще я не удивлён, что ты не видишь асимптотической разницы в (log log n)^2 на таком n

Bushido
04.11.2018
11:42:07

Маришка
04.11.2018
11:42:12
На кой хер распаковывать лист в лист?

Tigran
04.11.2018
11:42:39
я посмотрел асимптотики алгоритмов, которые ты сравниваешь, в википедии и увидел разницу в (log log n)^2

Маришка
04.11.2018
11:43:16

Bushido
04.11.2018
11:43:20

Tigran
04.11.2018
11:43:45
с учётом того, что второй алгоритм сложнее, очевидно, он начнёт выигрывать только на достаточно больших n
вывод: твой миллион - не достаточно большое n

Bushido
04.11.2018
11:44:54

Google

Tigran
04.11.2018
11:47:02
уже интереснее
а скинь код текстом


Bushido
04.11.2018
11:48:34
https://habr.com/post/122538/
import math
def sieveOfAtkin(limit):
P = [2,3]
sieve=[False]*(limit+1)
for x in range(1,int(math.sqrt(limit))+1):
for y in range(1,int(math.sqrt(limit))+1):
n = 4*x**2 + y**2
if n<=limit and (n%12==1 or n%12==5):
sieve[n] = not sieve[n]
n = 3*x**2+y**2
if n<= limit and n%12==7:
sieve[n] = not sieve[n]
n = 3*x**2 - y**2
if x>y and n<=limit and n%12==11:
sieve[n] = not sieve[n]
for x in range(5,int(math.sqrt(limit))):
if sieve[x]:
for y in range(x**2,limit+1,x**2):
sieve[y] = False
for p in range(5,limit):
if sieve[p] : P.append(p)
return P
sieve=sieveOfAtkin(10000000)
#print (sieve)
print (len(sieve))
n = 10000000 # число, до которого хотим найти простые числа
numbers = list(range(2, n + 1))
for number in numbers:
if number != 0:
for candidate in range(number**2, n+1, number):
numbers[candidate-2] = 0
#print(*list(filter(lambda x: x != 0, numbers))) # выводим простые числа
sieve=[*list(filter(lambda x: x != 0, numbers))]
print (len(sieve))


Nikolay
04.11.2018
11:49:15
Ещё раз
Сложный питон
Вы из с++?

Bushido
04.11.2018
11:49:57
вычитал, что Аткин быстрее Эратосфена, но из тех алгоритмов, что я нашел выходит обратное...

Tishka17
04.11.2018
11:49:59
Я бы предложил ещё вместо аппенда в P сделать generator expresdion

Tigran
04.11.2018
11:50:00

Bushido
04.11.2018
11:50:30
3.7
Аткина нашел в интернете, Эратосфена в другой группе помогли найти. в нем я только на #63 сменил number*2 на number**2

Tishka17
04.11.2018
11:52:26
И реально
1. Предпосчитай корень
2. Посчитай x**2, y**2 один раз за цикл
3. Убери аппенд в список
И проверь ещё раз

Tigran
04.11.2018
11:56:09
я взял твой код и у меня отношение времени работы Аткина к времени работы Эратосфена уменьшается с ростом n. но медленно.
вероятно, на достаточно большом n Аткин в итоге победит. но оперативки, чтобы дождаться этого, может не хватить)

Bushido
04.11.2018
11:57:39

Google

Bushido
04.11.2018
11:57:43
Спасибо

Tigran
04.11.2018
11:57:50
да там теория чисел обычная

Bushido
04.11.2018
12:01:32

Tigran
04.11.2018
12:01:44
питон — плохой язык для числодробилок
эффективные алгоритмы тут не так эффективны из-за накладных расходов (проверки индексов, например)
лучше изучать алгоритмы, для которых достаточно встроенных структур данных (динамический массив, хэштаблица, куча)

Bushido
04.11.2018
12:03:54

Tigran
04.11.2018
12:04:07
короч, изучай лучше структуры данных)

Bushido
04.11.2018
12:05:10

Nikolay
04.11.2018
12:09:36
Си
Linked list, tree
На этом мои знания всё

Nikolay
04.11.2018
12:10:08
?

Tigran
04.11.2018
12:11:02
недурно
разворачивать односвязный список умеешь? )

Tishka17
04.11.2018
12:11:52
Мы на собеседованиях обычно просили человека как можно больше способов разворота списка предложить

Tigran
04.11.2018
12:12:08
?
я только один эффективный себе представляю

Tishka17
04.11.2018
12:12:38
Эффективность не требуется

ivan
04.11.2018
12:13:00
Вот зачем так задрачивать

Google

Eldar
04.11.2018
12:13:03

Tigran
04.11.2018
12:13:29
ну вот
бля
что за вопросы

Nikolay
04.11.2018
12:13:52

Tigran
04.11.2018
12:14:12
сможет ли чувак придумать разворачивание списка за O(n! n)?

Nikolay
04.11.2018
12:14:39
а на выходе чувак не знаком с фреймворком, с интрументами банальными, использующиеся каждый день

Tigran
04.11.2018
12:14:41
но некоторые не справляются

Tishka17
04.11.2018
12:15:46

Admin
ERROR: S client not available

Tigran
04.11.2018
12:16:05
что за бред
можно же сразу давать задачки с ограничениями
скилл решать задачки с ограничениями у всех хороших разрабов есть
а скилл придумывать заведомо хуёвые решения — это как-то уж больно специфично

Tishka17
04.11.2018
12:16:50
Вопрос не в списке. А том, чтобы человек мог предложить альтернативное решение тому что уже знает

Tigran
04.11.2018
12:17:11
можно же просто давать задачки, которые человек ещё не знает)

Tishka17
04.11.2018
12:17:28
Да мы и перестали спрашивать про список

Tigran
04.11.2018
12:17:57
список — это хорошая задачка не на алгоритмы, а именно на код

Tishka17
04.11.2018
12:17:59
Народ как правило даже цифры в числе переставить не может

Google

?
04.11.2018
12:18:03

Tigran
04.11.2018
12:18:12
сможет ли человек на заявленном им языке быстро и просто написать хороший код для этого дела

?
04.11.2018
12:18:28

Tishka17
04.11.2018
12:19:21
Один кандидат пытался гуглить какая есть библиотека для взятия остатка от деления

Tigran
04.11.2018
12:19:42
? ? ?
oh my

Nikolay
04.11.2018
12:20:18
это был я

?
04.11.2018
12:20:58

Tishka17
04.11.2018
12:21:05

Tigran
04.11.2018
12:21:27
о, так это был мобильный разработчик
они ребята интересные

Tishka17
04.11.2018
12:21:32
Ага
Я в основном таких собеседовал

Nikolay
04.11.2018
12:21:57
у них ограничние на мемы и cpu

?
04.11.2018
12:21:57
ааа

Nikolay
04.11.2018
12:22:10
и акб

Tigran
04.11.2018
12:22:10
у нас в компании тоже проблемы с наймом мобильных разработчиков
мало кто скрининг даже проходит

Nikolay
04.11.2018
12:22:34
работать в вашей компании честь?

Tigran
04.11.2018
12:22:46

Tishka17
04.11.2018
12:23:00

Tigran
04.11.2018
12:23:54