Как найти сумму цифр числа в c
Перейти к содержимому

Как найти сумму цифр числа в c

Сумма цифр числа в C #?

Я пытаюсь написать код, который суммирует цифры числа, и он должен работать, но я не могу найти, где я делаю это неправильно, у меня есть рабочий код в Python для этого, и я пытался сделать это таким же образом в C # но .. вот два кода

Редактировать: я использовал отладчик, и я обнаружил, что когда я конвертирую числа, они оказываются совершенно разными числами, но если я конвертирую всю строку, то она конвертируется правильно . как это исправить?

7 ответов

num[i] является char и Convert.ToInt32 вернет код ASCII символа вместо фактического числового значения. Использование:

Также измените i < num.Length-1 на i < num.Length

Изменить . Чтобы сделать это более понятным, приведем пример:

Вы можете объединить несколько вещей.

Вы можете выбрать коллекцию char из string , используя Linq (Sum () — это метод Linq).

Вам все еще нужно преобразовать эти символы в числа; Вы можете сделать это, преобразовав символ в строку и проанализировав его, или вы можете использовать другой встроенный метод.

char , по своей сути, просто число. Это просто число, представляющее символ.

Вот некоторые решения, которые подчеркивают это:

В конце строки C # нет нуля, так что вам не нужно об этом беспокоиться, и, следовательно, не требуется «-1» в цикле. Тем не менее, есть гораздо более простой способ:

Это преобразует строку в массив символов, преобразует их все в целые числа (возвращая IEnumerable<int> в процессе), а затем возвращает сумму их всех.

Convert.ToInt32(num[i]); даст вам значение ASCII для цифры символа. Например, для символа 1 вы получите 49 .

Используйте char.GetNumericValue как:

Вам также нужно изменить цикл, чтобы он продолжался до длины, поскольку вы используете < .

Сумма цифр числа 100!

Написал код для подсчета суммы цифр в числе 100! для решения задачи на Проекте Эйлера. До этого успешно использовал кусок кода, который непосредственно подсчитывает сумму цифр, для решения аналогичной задачи с числом 2 в 1000 степени. Однако в случае с 100! результат неправильный. В чем проблема?

user avatar

user avatar

Задачу по-видимому придется решать в лоб, т.е. через длинную арифметику. Если все делать «руками», то это сразу приводит к дилемме:

Реализовывать длинное число в виде массива десятичных цифр, что сделает вычисление финальной суммы тривиальной операцией, но существенно удлинит и замедлит процесс длинного умножения.

Реализовывать длинное число в виде массива цифр в системе счисления с основанием 2 n/2 , где n — это ширина самого широкого умножения, поддерживаемого данной С++ платформой. Это ускорит длинное умножение, но потребует реализации длинного деления на 10 для того, чтобы получить цифры для сложения в финале.

Меня больше привлекает именно второй вариант. Например, (не гоняясь за процессорными тактами в операциях умножения и деления)

Пользуясь идей, предложенной @Германом Борисовым в комментариях, можно получить эффективный компромисс между этими двумя подходами: используем систему счисления с основанием 10 n , где n выбирается максимально возможным так, чтобы перемножение двух цифр не приводило к переполнению на данной С++ платформе.

При этом функция умножения останется почти неизменной, а функция вычисления суммы цифр существенно упростится (полноценная функция деления станет ненужной)

Эксперимент на QuickBench показывает, что это — существенно более эффективный подход

Разумеется, первый вариант не настолько эффективен, насколько он мог бы быть — из-за неэффективной реализации операции деления. Однако цели оптимизации и не ставилось. Все варианты работают за более чем приемлемое время.

Как найти сумму цифр числа в c

Регистрация на форуме тут, о проблемах пишите сюда — alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите восстановить пароль

Поиск по форуму
Расширенный поиск
К странице.

памагите кто небудь разобраться со втарой частию! найти сумму чисел состовляющих числа.

Модератор: тег CODE

вот так у меня получилось


Интенсив по Python: Работа с API и фреймворками 24-26 ИЮНЯ 2022. Знаете Python, но хотите расширить свои навыки?
Slurm подготовили для вас особенный продукт! Оставить заявку по ссылке — https://slurm.club/3MeqNEk

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *