Форум

Пожалуйста или Регистрация для создания записей и тем.

Помощь с кодом C#

Приветствую, друзья! Есть ли здесь люди, которые разбираются в C#? Нужна помощь.

Цитата: prb от 11.12.2022, 19:11

Приветствую, друзья! Есть ли здесь люди, которые разбираются в C#? Нужна помощь.

С++ точно найдутся, насчет С#, вполне вероятно. Вы вопрос свой напишите для начала ...

 

Есть простой код, по поиску так называемых чисел Кита. Вот ссылка на вики, если вдруг кто-то не знаком с этими числами. Код по поиску чисел есть, но не могу решить две проблемы:

  1. "Подружить" код с длинной арифметикой.
  2. Помочь реализовать поиск обратных чисел Кита (смотрим картинку).

 

citerra отреагировал на эту запись.
citerra

Вот есть пример на C# (и других языках): https://www.geeksforgeeks.org/keith-number/
На счет длинной арифметики, я бы не рекомендовал использовать C#, но если очень хочется - можно попробовать данный пример: https://programm.top/c-sharp/algorithm/arbitrary-precision-arithmetic/

SerVal и prb отреагировали на эту запись.
SerValprb
Цитата: AenBleidd от 11.12.2022, 20:02

На счет длинной арифметики, я бы не рекомендовал использовать C#, но если очень хочется - можно попробовать данный пример: https://programm.top/c-sharp/algorithm/arbitrary-precision-arithmetic/

Да, действительно, я читал, что для подобных целей лучше кодить на "плюсах", но дело в том, что синтаксис С-подобных языков мне практически не знаком. Лишь с языком C# приходилось сталкиваться из-за того, что в свое время немного работал в Unity. До этого программу по поиску чисел Кита писал на языке Python, но сравнивая с шарпом выяснилось, что код последнего выполняется почти в 9 раз быстрее, проверяя одинаковые диапазоны.

Числа Кита давно меня заинтересовали. С конца 80-х годов найдено что-то около 100 таких чисел. Вот по обратным числам информацию в интернете не нашел. А больше всего интересуют кластеры, которых найдено всего три и, как пишут, вероятно существуют только три кластера Кита. Ну чем не вызов, а? ;)

AenBleidd, спасибо за ссылки. Первая - не то, что нужно, там лишь проверяется, является ли число числом Кита или нет. А вот вторая ссылка полезная. Благодарю!

писал на языке Python, но сравнивая с шарпом выяснилось, что код последнего выполняется почти в 9 раз быстрее

А С++ в 5 раз быстрее чем C#. И синтаксис С++ почти такой же, как синтаксис C#.  :)

==== Ну и библиотека больших чисел у C#, мягко говоря, не очень.

prb отреагировал на эту запись.
prb
Цитата: prb от 11.12.2022, 21:33

Да, действительно, я читал, что для подобных целей лучше кодить на "плюсах", но дело в том, что синтаксис С-подобных языков мне практически не знаком. Лишь с языком C# приходилось сталкиваться из-за того, что в свое время немного работал в Unity.

Ну, если вдруг решите "дорасти" до полноценного проекта на BOINC, то все-таки от шарпа придется отказаться, так как запускать шарп-программы на ОС отличной от Windows - то еще удовольствие. Но тут как сами хотите. Так-то имплементация данного алгоритма на плюсах весьма тривиальна, и я сходу нашел две имплементации на С и С++ на GitHub, правда без длинной арифметики, но ее можно хоть через тот же boost прикрутить.
В любом случае - удачи!

prb отреагировал на эту запись.
prb
Цитата: prb от 11.12.2022, 21:33

Первая - не то, что нужно, там лишь проверяется, является ли число числом Кита или нет.

небольшая доработочка -- и проверяться будет целый диапазон... заданный.

Сначала напишите на С/С++ программулину, которая бы находила бы известные числа без "длинной арифметики" (те, для которых она не нужна, конечно). А потом переработайте её под "большие числа".

prb отреагировал на эту запись.
prb
BOINC.RU