Romeo » 22 дек 2017, 17:27
Что именно не получается?
Я бы это делал следующим образом:
1. Отсеиваем простые числа с помощью
решета Эратосфена (если есть ограничивающее сверху N, то этот способ будет работать куда быстрее, чем проверка всех множителей, хотя и потребует больше памяти).
2. Обходим простые числа и считаем их битовые единицы (например, наложением маски, хотя есть и более быстрые варианты, но они требуют владение ассемблером).
Что именно не получается?
Я бы это делал следующим образом:
1. Отсеиваем простые числа с помощью [url=https://ru.wikipedia.org/wiki/%D0%A0%D0%B5%D1%88%D0%B5%D1%82%D0%BE_%D0%AD%D1%80%D0%B0%D1%82%D0%BE%D1%81%D1%84%D0%B5%D0%BD%D0%B0]решета Эратосфена[/url] (если есть ограничивающее сверху N, то этот способ будет работать куда быстрее, чем проверка всех множителей, хотя и потребует больше памяти).
2. Обходим простые числа и считаем их битовые единицы (например, наложением маски, хотя есть и более быстрые варианты, но они требуют владение ассемблером).