0 / 0 / 0
Регистрация: 08.10.2017
Сообщений: 5
1

Найти число из интервала с заданным количеством делителей

08.10.2017, 18:36. Показов 1166. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Найти заданное число из интервала [A,B], сумма делителей которого, равна натуральному числу M, где M, A, B, вводятся пользователем с клавиатуры.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
08.10.2017, 18:36
Ответы с готовыми решениями:

Найти все натуральные числа из заданного промежутка, с заданным количеством делителей
Найти все натуральные числа из промежутка от 1 до 200, у которых количество делителей равно N (N...

Найти натуральное число из интервала и сумму его делителей
Найти натуральное число из интервала , сумма делителей которого равна натуральному числу M. А,В,М...

Нахождение числа с максимальным количеством делителей из интервала между a и b
Задача : Найдите натуральное число из интервала с a по b, у которого количество делителей...

В интервале от a до b найти число с наибольшим количеством делителей
a и b вводятся с клавиатуры,представить в виде функции

4
192 / 166 / 82
Регистрация: 01.07.2016
Сообщений: 943
08.10.2017, 19:24 2
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
#include <iostream>
using std::cin;
using std::cout;
 
int divs(int a)
{
    int sum = 0;
    for(int i = 1; i <= a / 2; ++i)
    {
        if(a % i == 0) sum += i;
    }
 
    return sum + a;
}
 
int main()
{
    int a, b, m;
    cin >> a >> b >> m;
 
    for(int i = a; i <= b; ++i)
    {
        if(m == divs(i)) cout << i << ' ';
    }
}
1
Диссидент
Эксперт C
27706 / 17322 / 3812
Регистрация: 24.12.2010
Сообщений: 38,979
08.10.2017, 20:34 3
C++
1
2
3
4
5
6
7
8
9
10
11
12
int divs(int a)
{
   if (a==1) return 1;
   int sum = a+1;
   for(int i=2; i*i<=n; i++) {
     if (n%i==0) {
       sum += i;
       if (i*i != a) sum += a/i;
     }
   }
   return sum;
}
no swear, чего циклы-то зря гонять?

Добавлено через 1 минуту
Окромя того при a=1 ваша divs дает неверный ответ
1
192 / 166 / 82
Регистрация: 01.07.2016
Сообщений: 943
08.10.2017, 21:58 4
Цитата Сообщение от Байт Посмотреть сообщение
Окромя того при a=1 ваша divs дает неверный ответ
a = 1, b = 10, m = 1 -> 1. Чего тут неправильного то?
При каких данных b и m неправильный ответ?

Цитата Сообщение от Байт Посмотреть сообщение
чего циклы-то зря гонять?
Знаю я этот финт Просто потом ТС будет ещё вопросы задавать лучше сразу так решить без вопросов

Добавлено через 3 минуты
Чуть подправил в случае отсутствия таких чисел
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
33
#include <iostream>
using std::cin;
using std::cout;
 
int divs(int a)
{
    int sum = 0;
    for(int i = 1; i <= a / 2; ++i)
    {
        if(a % i == 0) sum += i;
    }
 
    return sum + a;
}
 
int main()
{
    int a, b, m;
    cin >> a >> b >> m;
 
    bool f = false;
    for(int i = a; i <= b; ++i)
    {
        if(m == divs(i))
        {
            cout << i << ' ';
            f = true;
        }
    }
 
    if(!f) cout << "Absent";
    return 0;
}
Добавлено через 2 минуты
a = 1, b = 2, m = 3 -> 2

Добавлено через 1 минуту
a = 1, b = 10, m = 18 -> 10
1
Диссидент
Эксперт C
27706 / 17322 / 3812
Регистрация: 24.12.2010
Сообщений: 38,979
08.10.2017, 22:08 5
Цитата Сообщение от no swear Посмотреть сообщение
будет ещё вопросы задавать
Понял, вопрос снят. Но думаю, и мой код будет не лишним, вдруг ТС захочет оптимальности
Цитата Сообщение от no swear Посмотреть сообщение
При каких данных b и m неправильный ответ?
a=1 b=10 m=2. Выдаст единичку. А у ней, у бедолаги, всего один делитель!
...
Нет! Прошу прощения! Почудилось! Все правильно. Вы же до а/2 циклите! и divs(1) = 1
1
08.10.2017, 22:08
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
08.10.2017, 22:08
Помогаю со студенческими работами здесь

Процедуры и функции: Найти натуральное число из интервала [n1, n2] с максимальной суммой делителей
Найти натуральное число из интервала с максимальной суммой делителей. Для нахождения суммы...

В заданном интервале найти число, с наибольшим количеством делителей
На вход программы подаются положительные числа a и b. Гарантируется, что а &lt;= b. Найти число из...

В диапазоне натуральных чисел найти число с максимальным количеством делителей
нужно написать программу на с++ по задаче: в диапазоне натуральных чисел найти число с максимальным...

Число с наибольшим количеством делителей
На вход программы подаются положительные числа a и b. Гарантируется, что а &lt;= b. Найти число из...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru