Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
aidar9119
1 / 1 / 0
Регистрация: 20.12.2010
Сообщений: 73
#1

На натуральном отрезке [a,b]... - C++

22.10.2011, 09:13. Просмотров 266. Ответов 1
Метки нет (Все метки)

На натуральном отрезке [a,b] найдите и выведите число N с наибольшей суммой своих делителей. Само число и единицу в качестве делителей не учитывать.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.10.2011, 09:13     На натуральном отрезке [a,b]...
Посмотрите здесь:

C++ Подсчитать количество цифр в натуральном числе
C++ Определить количество различных цифр в натуральном числе
C++ Подсчитать количество цифр в заданном натуральном числе.
C++ Найти в в натуральном числе, повторяющиеся
C++ Проверить, что в натуральном числе встречаются цифры А и В.
Количество четных цифр в натуральном числе C++
Найти количество цифр в заданном натуральном числе C++
Вычислить количество цифр в заданном натуральном числе C++
C++ Определить, есть ли в заданном натуральном числе указанные цифры
Вычислить данную сумму, при натуральном n C++
Рекурсия: подсчитать количество цифр в заданном натуральном числе C++
Рекурсивно вычислить количество цифр в заданном натуральном числе C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
valeriikozlov
Эксперт C++
4663 / 2489 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
22.10.2011, 10:29     На натуральном отрезке [a,b]... #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
26
27
28
29
30
31
32
33
34
35
#include <stdio.h>
#include <math.h>
int func(int a)
{
    int res=0, i;
    for(i=2; i<=sqrt(a); i++)
        if(a%i==0)
        {
            res+=i;
            if(i*i!=a)
                res+=a/i;
        }
    return res;
}
 
int main(){
    int a, b, i, max_sum, max, tmp;
    printf("a= ");
    scanf("%d", &a);
    printf("b= ");
    scanf("%d", &b);
    max=a;
    max_sum=func(a);
    for(i=a+1; i<=b; i++)
    {
        tmp=func(i);
        if(tmp>max_sum)
        {
            max_sum=tmp;
            max=i;
        }
    }
    printf("res= %d\n", max);        
        return 0;
}
Но если есть ограничения по времени, то есть еще варианты как этот подсчет ускорить.
Yandex
Объявления
22.10.2011, 10:29     На натуральном отрезке [a,b]...
Ответ Создать тему
Опции темы

Текущее время: 12:01. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru