есть быстрый алгоритм, аналогичный мощности 2, который можно использовать с 3, т. Е. N% 3. Возможно, что-то, что использует тот факт, что если сумма цифр делится на три, то число также делится.Быстрое modulo 3 или алгоритм деления?
Это приводит к следующему вопросу. Каков быстрый способ добавления цифр в число? То есть 37 -> 3 +7 -> 10 Я ищу что-то, что не имеет условными, как те, как правило, подавляют векторизации
благодаря
Добавление цифр не будет работать в этом случае, потому что вам придется преобразовать число сначала в десятичное число, которое занимает _much_ больше времени, чем просто деление. –
Что вы на самом деле пытаетесь достичь? Если это не теоретическое любопытство, я сомневаюсь, что эта конкретная проблема может быть узким местом применения в реальном мире ... –
это и практическое, и теоретическое. вопрос возникает из-за попытки распределить несколько вложенных циклов над декартовыми центрами среди потоков (Cuda конкретно, но это не важно). Я уже решил проблему по-другому, но все же хотел бы знать, есть ли способ. Это реальное узкое место, поскольку целочисленное деление и модуляция намного дороже, чем реальные операции с плавающей запятой, которые я пытаюсь сделать параллельными. – Anycorn