Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
1 / 1 / 0
Регистрация: 26.11.2018
Сообщений: 125

Как доработать код?

20.03.2020, 09:10. Показов 608. Ответов 13
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Задание: Определить сумму делителей данного натурального числа используя рекурсивную подпрограмму
Есть код, который выводит ДЕЛИТЕЛИ подскажите, как сделать, чтобы выводилась сумма делителей

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
int FindFactors(int n, int i = 1)
        {
           
            if (n % i == 0)
                Console.Write(i + " ");
            sum += i;
            if (i == n) return;
            FindFactors(n, ++i);
            
 
        }
        static void Main(string[] args)
        {
            Console.WriteLine("Введите натуральное число n");
            int n = int.Parse(Console.ReadLine());
           
            FindFactors(n);
          
            
          
            Console.ReadKey();
        }
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
20.03.2020, 09:10
Ответы с готовыми решениями:

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

Как доработать код?
Разработать функцию number_generator (number, digit, position), которая при вызове принимает три целых числа. number - может быть...

Подскажите как доработать код
Нужно посчитать копейки. от 1-й до 99-ти. Суть в том что бы посчитать в порядке 1-копейка, 2,3,4-копейки, 5-20-копеек, 21-копейка,...

13
 Аватар для Bampo
114 / 82 / 37
Регистрация: 15.02.2020
Сообщений: 206
20.03.2020, 09:27
Анастасия2018, возможно так:

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
        int sum;
        int FindFactors(int n, int i = 1)
        {
           
            if (n % i == 0){
                Console.Write(i + " ");
                sum += i;
            }
            if (i == n) return;
            FindFactors(n, ++i);
            
 
        }
        static void Main(string[] args)
        {
            Console.WriteLine("Введите натуральное число n");
            int n = int.Parse(Console.ReadLine());
           
            FindFactors(n);
          
            Console.WriteLine(sum);
          
            Console.ReadKey();
        }
0
1 / 1 / 0
Регистрация: 26.11.2018
Сообщений: 125
20.03.2020, 10:04  [ТС]
вот, что получается
Вложения, ожидающие проверки
Тип файла: png Снимок.PNG
0
20.03.2020, 10:10
 Комментарий модератора 
Анастасия2018, не следует выкладывать код в виде картинок
0
 Аватар для chumich
2081 / 1239 / 464
Регистрация: 20.12.2014
Сообщений: 3,234
20.03.2020, 10:11
Местами две строки перепутали: 1-ю и 2-ю.
0
1 / 1 / 0
Регистрация: 26.11.2018
Сообщений: 125
20.03.2020, 10:19  [ТС]
ничего не изменится, даже если поменять
Вложения, ожидающие проверки
Тип файла: png Снимок.PNG
0
 Аватар для chumich
2081 / 1239 / 464
Регистрация: 20.12.2014
Сообщений: 3,234
20.03.2020, 10:24
Скобки фигурные проверьте - если Main подчеркивает, обычно, со скобками что-то не так.
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16124 / 11248 / 2888
Регистрация: 21.04.2018
Сообщений: 33,081
Записей в блоге: 2
20.03.2020, 10:46
Анастасия2018, вы неверно размещаете методы.
Вы их поместили в пространство имён.
А надо помещать в тело класса Program.

Добавлено через 9 минут
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
using System;
 
namespace ConsoleApp1908
{
 
    class Program
    {
        static void Main(string[] args)
        {
 
            int sumFactors(int number)
            {
                for (int i = 2; i*i <= number; i++)
                {
                    if (number % i == 0)
                        return i +  sumFactors(number / i);
                }
                return 0;
            }
 
            Console.WriteLine("Введите натуральное число n");
            int n = int.Parse(Console.ReadLine());
 
            sumFactors(n);
 
 
            Console.ReadKey();
1
1 / 1 / 0
Регистрация: 26.11.2018
Сообщений: 125
20.03.2020, 11:02  [ТС]
попробовала на вашей программе-дает ввести только число и дальше ничего не происходит
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16124 / 11248 / 2888
Регистрация: 21.04.2018
Сообщений: 33,081
Записей в блоге: 2
20.03.2020, 11:11
Вот так правильно будет.
В предыдущем - слегка накосячил
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
using System;
namespace ConsoleApp1908
{
 
    class Program
    {
        static void Main(string[] args)
        {
 
            int sumFactors(int number)
            {
                for (int i = 2; i * i <= number; i++)
                {
                    if (number % i == 0)
                    {
                        int j = number / i;
                        int s = sumFactors(j);
                        if (s == 0)
                            s = j;
                        return i + s;
                    }
                }
                return 0;
            }
 
            Console.WriteLine("Введите натуральное число n");
            int n = int.Parse(Console.ReadLine());
 
            Console.WriteLine(sumFactors(n));
 
 
            Console.ReadKey();
Добавлено через 54 секунды
Цитата Сообщение от Анастасия2018 Посмотреть сообщение
попробовала на вашей программе-дает ввести только число и дальше ничего не происходит
Я просто скопировал ваш код.
А в нём не было вывода значения.

Добавлено через 15 секунд
Цитата Сообщение от Анастасия2018 Посмотреть сообщение
попробовала на вашей программе-дает ввести только число и дальше ничего не происходит
Я просто скопировал ваш код.
А в нём не было вывода значения.
1
1 / 1 / 0
Регистрация: 26.11.2018
Сообщений: 125
20.03.2020, 11:18  [ТС]
Спасибо, код вроде работает, но не совсем понятно, почему например для числа 10
сумма делителей равна 7, ведь оно делится на 10,1,5,2
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16124 / 11248 / 2888
Регистрация: 21.04.2018
Сообщений: 33,081
Записей в блоге: 2
20.03.2020, 11:42
Цитата Сообщение от Анастасия2018 Посмотреть сообщение
Спасибо, код вроде работает, но не совсем понятно, почему например для числа 10
сумма делителей равна 7, ведь оно делится на 10,1,5,2
По правилам математики единица и само число не считаются его делителями.

У вас как точно сформулировано в задаче?

Добавлено через 2 минуты
Если их надо тоже считать - поменяйте строчку
C#
29
           Console.WriteLine(sumFactors(n)+n+1);
1
1 / 1 / 0
Регистрация: 26.11.2018
Сообщений: 125
20.03.2020, 12:43  [ТС]
Спасибо, разобралась
А можно ли как то эту программу переписать, чтобы рекурсия была перед методом Main?
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16124 / 11248 / 2888
Регистрация: 21.04.2018
Сообщений: 33,081
Записей в блоге: 2
20.03.2020, 13:53
Цитата Сообщение от Анастасия2018 Посмотреть сообщение
Спасибо, разобралась
А можно ли как то эту программу переписать, чтобы рекурсия была перед методом Main?
Прост вынесите её из Main внутрь Program и добавьте static
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
using System;
namespace ConsoleApp1908
{
 
    class Program
    {
        static  int SumFactors(int number)
            {
                for (int i = 2; i * i <= number; i++)
                {
                    if (number % i == 0)
                    {
                        int j = number / i;
                        int s = SumFactors(j);
                        if (s == 0)
                            s = j;
                        return i + s;
                    }
                }
                return 0;
            }
 
        static void Main(string[] args)
        {
 
            Console.WriteLine("Введите натуральное число n");
            int n = int.Parse(Console.ReadLine());
 
            Console.WriteLine(SumFactors(n));
 
 
            Console.ReadKey();
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
20.03.2020, 13:53
Помогаю со студенческими работами здесь

While в Python: объясните как доработать код
Необходимо ввести два числа с условием их равности, причем одно число мы задаем, а с помощью второго пытаемся догадаться каким было первое....

Как доработать код вывода информации из txt
Не смог разобраться, как: 1. Допустим лимит строк = 50, т.е после 51 строки старые удаляются по одному, а новые добавляются. 2. Как...

Строку преобразовать в математическое выражение. Как доработать код?
//в итоге мы должны получить из введенной строки 2+6+8 значение суммы. //вот мой код, не пойму почему не работает: //ввели к примеру...

Подскажите, пожалуйста, как доработать код под ЛистБокс
При поочередной обработке файлов в ListBox остается текстовая выборка из последнего файла (она же сохраняется в файл). Подскажите, как в...

Доработать код с возможностью деления информации на столбцы, объяснить, как сделать надстройку
Уважаемые форумчане. Помогите доработать код нужно чтобы при вставки отфильтрованного значение делились на два столбца. И помогите...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru