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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 20, средняя оценка - 4.80
OffSide
2 / 2 / 0
Регистрация: 03.10.2010
Сообщений: 111
#1

Программа для отыскания заданного количества пар дружественных чисел - C++

03.10.2010, 13:30. Просмотров 2619. Ответов 32
Метки нет (Все метки)

Два числа называют дружественными, если каждое из них равно сумме всех делителей другого, кроме самого этого числа. Например, 220 и 284 есть дружественные числа, так как делителями первого являются числа 1 2 4 5 10 11 20 22 44 55 110, сумма которых равно 284, а делителями второго - числа 1 2 4 71 142, которые в сумме дают 220. Напишите программу для отыскания заданного количества пар дружественных чисел.

Помогите решить.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.10.2010, 13:30
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Программа для отыскания заданного количества пар дружественных чисел (C++):

Из заданного интервала натуральных чисел выбрать и напечатать все пары дружественных чисел - C++
Напишите пожалуйста простой код на с++ вот условие Из заданного интервала натуральных чисел выбрать и напечатать все пары дружественных...

Найти все пары дружественных чисел, не превосходящих заданного числа - C++
Два натуральных числа называются "дружественными", если каждое из них равно сумме всех делителей другого, за исключением его самого...

Найти все пары дружественных чисел, не превосходящих заданного натурального числа N - C++
Два натуральных числа называются дружественными, если каждое из них равно сумме всех делителей другого, кроме самого этого числа. Найти все...

Программа для поиска пар взаимно-простых натуральных чисел на определенном промежутке. - C++
Как такое организовать? Тоесть вводишь число 5 потом 10 и программа должна найти все пары чисел у которых нод равен 1!

Нахождение пар чисел равныхпроизведению заданного числа( одномерный массив) - C++
Составить программу, которая в целочисленном массиве А, состоящем из N чисел находит количество таких пар элементов, произведение которых...

Для заданного четного числа вычислить сумму, для нечетного произведение чисел от 1 до заданного - C++
c++ дано число вводится с клавиатуры, если оно четное, то ввести сумму с 1 до n. Если нечетное — произведение от 1 до n. вывести на экран

32
PointsEqual
ниначмуроФ
836 / 520 / 33
Регистрация: 12.10.2009
Сообщений: 1,915
03.10.2010, 16:30 #16
Цитата Сообщение от OffSide Посмотреть сообщение
мы пишем просто, как начинающие)
там просто ввод есть, вот там все и расписано, вот немного упрсотил может быть

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
36
37
38
39
40
41
42
#include <iostream>
 
/*
Два числа называют дружественными, если каждое из них равно сумме всех делителей другого, кроме самого этого числа.
Например, 220 и 284 есть дружественные числа, так как делителями первого являются числа 1 2 4 5 10 11 20 22 44 55 110, сумма которых
равна 284, а делителями второго - числа 1 2 4 71 142, которые в сумме дают 220.
Напишите программу для отыскания заданного количества пар дружественных чисел.
*/
 
bool isfriendly(int x, int y){
    int sx = 0;
    for (int i = 1; i < x; ++i)
        if ( (x % i) == 0 )
            sx = sx + i;
 
    if ( sx == y )
        return true;
    else
        return false;
}
 
 
 
int main()
{
    int cnt = 5; //первые 5
 
    int i = 2;
    while (cnt){
        int j = 1;
        while( j < i ){
            if (isfriendly(j,i) !=0 && isfriendly(i,j)  !=0){
                --cnt;
                std::cout << j <<"," << i << std::endl;
            }
            ++j;
        }
        ++i;
    }
 
    return 0;
}
+исправь 32 строку
кстати это с++
0
CyBOSSeR
Эксперт С++
2303 / 1673 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
03.10.2010, 16:30 #17
Цитата Сообщение от OffSide Посмотреть сообщение
как учат, так и прописываем
Хреново учат. Прислушайтесь к словам silent_1991.
0
Хохол
Эксперт С++
475 / 443 / 13
Регистрация: 20.11.2009
Сообщений: 1,292
03.10.2010, 16:33 #18
C++
1
if (isfriendly(j,i) !=0 && isfriendly(i,j)  !=0)
Ну а с нулем-то зачем сравнивать?
0
PointsEqual
ниначмуроФ
836 / 520 / 33
Регистрация: 12.10.2009
Сообщений: 1,915
03.10.2010, 16:34 #19
Цитата Сообщение от Хохол Посмотреть сообщение
Ну а с нулем-то зачем сравнивать?
хотел чтобы было понятней, и у OffSide приняли программу
0
OffSide
2 / 2 / 0
Регистрация: 03.10.2010
Сообщений: 111
03.10.2010, 16:38  [ТС] #20
Цитата Сообщение от CyBOSSeR Посмотреть сообщение
Хреново учат. Прислушайтесь к словам silent_1991.
хорошо, щас скачал книгу Харви Дейтел, Пол Дейтел "КАК ПРОГРАММИРОВАТЬ НА C++ " говорят, норм для начинающих..

Добавлено через 4 минуты
Цитата Сообщение от PointsEqual Посмотреть сообщение
хотел чтобы было понятней, и у OffSide приняли программу
спасибо большое!
0
OffSide
2 / 2 / 0
Регистрация: 03.10.2010
Сообщений: 111
10.10.2010, 14:15  [ТС] #21
вообщем, помощь еще требуется, с этой задачей.

вот что я написал , по образцу универа:

C++
1
2
3
4
5
6
7
#include <stdio.h>;
voidmain ()
{ //поиск делителей
int x;
printf ("введите числа");
scanf (%d, &x);
for (int d=1; d<=x/2; d++)

помогите дописать, вот задача : Два числа называют дружественными, если каждое из них равно сумме всех делителей другого, кроме самого этого числа. Например, 220 и 284 есть дружественные числа, так как делителями первого являются числа 1 2 4 5 10 11 20 22 44 55 110, сумма которых равно 284, а делителями второго - числа 1 2 4 71 142, которые в сумме дают 220. Напишите программу для отыскания заданного количества пар дружественных чисел.

Добавлено через 2 часа 30 минут
блин препод похоже поимеет меня жоско)))))

Добавлено через 19 часов 49 минут
up...
0
OffSide
2 / 2 / 0
Регистрация: 03.10.2010
Сообщений: 111
13.10.2010, 16:10  [ТС] #22
up...
0
silent_1991
Эксперт С++
4985 / 3042 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
13.10.2010, 16:57 #23
Вы наотрез не хотите ничего делать сами. Лишь бы up'кать... Ловите: самый тупой и простой способ - делители ищутся перебором (к сведению - написано за 10 минут, так что абсолютно никаких сложностей, и код простой, доступный для начинающего. Основная сложность - сама матчасть, но это не в раздел C/C++).

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
36
37
38
39
40
#include <stdio.h>
#include <conio.h>
 
int main()
{
    int pairs;
    int count = 0;
    int num1 = 1, num2;
    int sum;
    int i;
 
    printf("Enter number of pairs: ");
    scanf("%d", &pairs);
 
    while (count != pairs)
    {
        num1++;
        num2 = 0;
        sum = 0;
 
 
        for (i = 1; i <= num1 / 2; i++)
            if (num1 % i == 0)
                num2 += i;
 
        for (i = 1; i <= num2 / 2; i++)
            if (num2 % i == 0)
                sum += i;
 
        if (sum == num1 && num1 != num2)
        {
            count++;
            printf("Pair %d: %d  %d\n", count, num1, num2);
            num1 = num2 + 1;
        }
    }
 
    getch();
    return 0;
}
Может можно оптимизировать (не имеется ввиду заменить алгоритм нахождения простых делителей на более быстрый, а оптимизировать существующий код), но честно - лень.
1
OffSide
2 / 2 / 0
Регистрация: 03.10.2010
Сообщений: 111
13.10.2010, 17:04  [ТС] #24
извините , что я такой лодырь и вообще негодный человек... спасибо большое! и кстати я всего месяц изучаю этот язык программирования и нам сразу такие задачи в универе предлагают.
0
silent_1991
Эксперт С++
4985 / 3042 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
13.10.2010, 17:16 #25
Не надо тут подобных фраз. Это глупо - о себе так говорить. И уж тем более я этого не подразумевал. Но вы лентяй - об этом я говорю, и совершенно справедливо. Потому как посмотрите на код. За первый месяц обучения я уже мог бы подобный код написать, может не точно такой, но похожий. И если бы вы постарались - тоже смогли бы.
1
OffSide
2 / 2 / 0
Регистрация: 03.10.2010
Сообщений: 111
13.10.2010, 17:17  [ТС] #26
Цитата Сообщение от silent_1991 Посмотреть сообщение
Не надо тут подобных фраз. Это глупо - о себе так говорить. И уж тем более я этого не подразумевал. Но вы лентяй - об этом я говорю, и совершенно справедливо. Потому как посмотрите на код. За первый месяц обучения я уже мог бы подобный код написать, может не точно такой, но похожий. И если бы вы постарались - тоже смогли бы.
полностью согласен, что я еще и лентяй!
0
silent_1991
Эксперт С++
4985 / 3042 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
13.10.2010, 17:25 #27
Ну а задача не на язык, а на составление алгоритма (очень простого, надо сказать). Одно логически вытекает из другого. Надо найти сумму делителей числа? Ищем алгоритм поиска простых делителей (его кстати и самому придумать можно, всё опять же логично донельзя). Надо для двух чисел? Ищем два раза. Надо понять, равна ли сумма делителей одного числа другому - ну и сравниваем вторую сумму с первым числом, а первую со вторым (у меня сделано несколько иначе, чтобы не создавать лишней переменной, записываем сумму делителей первого числа сразу во второе число). Если равны - выводим эту пару.
Учитесь составлять алгоритмы. Если вы будете кодить чужие алгоритмы, вы не станете программистом, максимум кодером. А если вы будете вообще брать чужой код, то это уже совсем плохо... Работа программиста - придумать алгоритм, работа кодера - закодить его на целевом языке. Часто эти две должности совмещают. Однако разделение между ними имеется.
0
OffSide
2 / 2 / 0
Регистрация: 03.10.2010
Сообщений: 111
13.10.2010, 17:30  [ТС] #28
Цитата Сообщение от silent_1991 Посмотреть сообщение
Ну а задача не на язык, а на составление алгоритма (очень простого, надо сказать). Одно логически вытекает из другого. Надо найти сумму делителей числа? Ищем алгоритм поиска простых делителей (его кстати и самому придумать можно, всё опять же логично донельзя). Надо для двух чисел? Ищем два раза. Надо понять, равна ли сумма делителей одного числа другому - ну и сравниваем вторую сумму с первым числом, а первую со вторым (у меня сделано несколько иначе, чтобы не создавать лишней переменной, записываем сумму делителей первого числа сразу во второе число). Если равны - выводим эту пару.
Учитесь составлять алгоритмы. Если вы будете кодить чужие алгоритмы, вы не станете программистом, максимум кодером. А если вы будете вообще брать чужой код, то это уже совсем плохо... Работа программиста - придумать алгоритм, работа кодера - закодить его на целевом языке. Часто эти две должности совмещают. Однако разделение между ними имеется.
ясно. ну с моим знанием языка, и функций очень сложно что-то грамотно и верно написать. к тому же помимо программирования в течение месяца я батрачил над др предметами
0
silent_1991
Эксперт С++
4985 / 3042 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
13.10.2010, 17:36 #29
Да все тут батрачат не только над программированием. Только вот скажите, сколько функций в моём коде? Хотя нет, не отвечайте... Дайте мне самому подсчитать... Их 4! Причём одна из них повторяется дважды, а вторая по сути вообще не нужна (программа работает и без неё, если запускать из командной строки - всё окей). Остальное - средства языка. И за первый месяц их (те, что используются у меня) вроде успевают пройти (циклы, условный оператор). Так что...
0
OffSide
2 / 2 / 0
Регистрация: 03.10.2010
Сообщений: 111
13.10.2010, 17:39  [ТС] #30
Цитата Сообщение от silent_1991 Посмотреть сообщение
Да все тут батрачать не только над программированием. Только вот скажите, сколько функций в моём коде? Хотя нет, не отвечайте... Дайте мне самому подсчитать... Их 4! Причём одна из них повторяется дважды, а вторая по сути вообще не нужна (программа работает и без неё, если запускать из командной строки - всё окей). Остальное - средства языка. И за первый месяц их (те, что используются у меня) вроде успевают пройти (циклы, условный оператор). Так что...
да, каждое слово тут верно. вы случайно не мой препод?))))
0
13.10.2010, 17:39
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.10.2010, 17:39
Привет! Вот еще темы с ответами:

Программа, считающая колличество выпаданий орла и решки из заданного количества раз - C++
Друзья, прошу помощи! Учусь на инженера, столкнулась с С++. Изучаю урывками из-за коллоссальнойт нагрузки по другим предметам. Yсловия:...

Как в последовательности чисел заданного количества элементов выбрать семь последних? - C++
Как в последовательности чисел заданного кол-ва элементов выбрать семь последних?

Массивы. Упорядочить элементы заданного массива целых чисел по убыванию количества единиц... - C++
Задание 1 Упорядочить элементы заданного массива целых чисел по убыванию количества единиц, содержащихся в двоичном представлении...

Дан одномерный массив из M × N целых чисел. Составить программу определения количества повторений заданного элементаx. - C++
Дан одномерный массив из M × N целых чисел. Составить программу определения количества повторений заданного элементаx. Добавлено...


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

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

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