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

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

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 20, средняя оценка - 4.80
OffSide
2 / 2 / 0
Регистрация: 03.10.2010
Сообщений: 111
03.10.2010, 13:30     Программа для отыскания заданного количества пар дружественных чисел #1
Два числа называют дружественными, если каждое из них равно сумме всех делителей другого, кроме самого этого числа. Например, 220 и 284 есть дружественные числа, так как делителями первого являются числа 1 2 4 5 10 11 20 22 44 55 110, сумма которых равно 284, а делителями второго - числа 1 2 4 71 142, которые в сумме дают 220. Напишите программу для отыскания заданного количества пар дружественных чисел.

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

Нахождение пар чисел равныхпроизведению заданного числа( одномерный массив) C++
C++ Программа для поиска пар взаимно-простых натуральных чисел на определенном промежутке.
C++ Дан одномерный массив из M × N целых чисел. Составить программу определения количества повторений заданного элементаx
C++ Дан одномерный массив из M × N целых чисел. Составить программу определения количества повторений заданного элементаx.
C++ Найти все пары дружественных чисел, не превосходящих заданного натурального числа N
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
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...
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
OffSide
2 / 2 / 0
Регистрация: 03.10.2010
Сообщений: 111
13.10.2010, 16:10  [ТС]     Программа для отыскания заданного количества пар дружественных чисел #22
up...
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 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;
}
Может можно оптимизировать (не имеется ввиду заменить алгоритм нахождения простых делителей на более быстрый, а оптимизировать существующий код), но честно - лень.
OffSide
2 / 2 / 0
Регистрация: 03.10.2010
Сообщений: 111
13.10.2010, 17:04  [ТС]     Программа для отыскания заданного количества пар дружественных чисел #24
извините , что я такой лодырь и вообще негодный человек... спасибо большое! и кстати я всего месяц изучаю этот язык программирования и нам сразу такие задачи в универе предлагают.
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
13.10.2010, 17:16     Программа для отыскания заданного количества пар дружественных чисел #25
Не надо тут подобных фраз. Это глупо - о себе так говорить. И уж тем более я этого не подразумевал. Но вы лентяй - об этом я говорю, и совершенно справедливо. Потому как посмотрите на код. За первый месяц обучения я уже мог бы подобный код написать, может не точно такой, но похожий. И если бы вы постарались - тоже смогли бы.
OffSide
2 / 2 / 0
Регистрация: 03.10.2010
Сообщений: 111
13.10.2010, 17:17  [ТС]     Программа для отыскания заданного количества пар дружественных чисел #26
Цитата Сообщение от silent_1991 Посмотреть сообщение
Не надо тут подобных фраз. Это глупо - о себе так говорить. И уж тем более я этого не подразумевал. Но вы лентяй - об этом я говорю, и совершенно справедливо. Потому как посмотрите на код. За первый месяц обучения я уже мог бы подобный код написать, может не точно такой, но похожий. И если бы вы постарались - тоже смогли бы.
полностью согласен, что я еще и лентяй!
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
13.10.2010, 17:25     Программа для отыскания заданного количества пар дружественных чисел #27
Ну а задача не на язык, а на составление алгоритма (очень простого, надо сказать). Одно логически вытекает из другого. Надо найти сумму делителей числа? Ищем алгоритм поиска простых делителей (его кстати и самому придумать можно, всё опять же логично донельзя). Надо для двух чисел? Ищем два раза. Надо понять, равна ли сумма делителей одного числа другому - ну и сравниваем вторую сумму с первым числом, а первую со вторым (у меня сделано несколько иначе, чтобы не создавать лишней переменной, записываем сумму делителей первого числа сразу во второе число). Если равны - выводим эту пару.
Учитесь составлять алгоритмы. Если вы будете кодить чужие алгоритмы, вы не станете программистом, максимум кодером. А если вы будете вообще брать чужой код, то это уже совсем плохо... Работа программиста - придумать алгоритм, работа кодера - закодить его на целевом языке. Часто эти две должности совмещают. Однако разделение между ними имеется.
OffSide
2 / 2 / 0
Регистрация: 03.10.2010
Сообщений: 111
13.10.2010, 17:30  [ТС]     Программа для отыскания заданного количества пар дружественных чисел #28
Цитата Сообщение от silent_1991 Посмотреть сообщение
Ну а задача не на язык, а на составление алгоритма (очень простого, надо сказать). Одно логически вытекает из другого. Надо найти сумму делителей числа? Ищем алгоритм поиска простых делителей (его кстати и самому придумать можно, всё опять же логично донельзя). Надо для двух чисел? Ищем два раза. Надо понять, равна ли сумма делителей одного числа другому - ну и сравниваем вторую сумму с первым числом, а первую со вторым (у меня сделано несколько иначе, чтобы не создавать лишней переменной, записываем сумму делителей первого числа сразу во второе число). Если равны - выводим эту пару.
Учитесь составлять алгоритмы. Если вы будете кодить чужие алгоритмы, вы не станете программистом, максимум кодером. А если вы будете вообще брать чужой код, то это уже совсем плохо... Работа программиста - придумать алгоритм, работа кодера - закодить его на целевом языке. Часто эти две должности совмещают. Однако разделение между ними имеется.
ясно. ну с моим знанием языка, и функций очень сложно что-то грамотно и верно написать. к тому же помимо программирования в течение месяца я батрачил над др предметами
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
13.10.2010, 17:36     Программа для отыскания заданного количества пар дружественных чисел #29
Да все тут батрачат не только над программированием. Только вот скажите, сколько функций в моём коде? Хотя нет, не отвечайте... Дайте мне самому подсчитать... Их 4! Причём одна из них повторяется дважды, а вторая по сути вообще не нужна (программа работает и без неё, если запускать из командной строки - всё окей). Остальное - средства языка. И за первый месяц их (те, что используются у меня) вроде успевают пройти (циклы, условный оператор). Так что...
OffSide
2 / 2 / 0
Регистрация: 03.10.2010
Сообщений: 111
13.10.2010, 17:39  [ТС]     Программа для отыскания заданного количества пар дружественных чисел #30
Цитата Сообщение от silent_1991 Посмотреть сообщение
Да все тут батрачать не только над программированием. Только вот скажите, сколько функций в моём коде? Хотя нет, не отвечайте... Дайте мне самому подсчитать... Их 4! Причём одна из них повторяется дважды, а вторая по сути вообще не нужна (программа работает и без неё, если запускать из командной строки - всё окей). Остальное - средства языка. И за первый месяц их (те, что используются у меня) вроде успевают пройти (циклы, условный оператор). Так что...
да, каждое слово тут верно. вы случайно не мой препод?))))
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
13.10.2010, 17:41     Программа для отыскания заданного количества пар дружественных чисел #31
OffSide,
Эт вряд ли
OffSide
2 / 2 / 0
Регистрация: 03.10.2010
Сообщений: 111
04.11.2010, 15:32  [ТС]     Программа для отыскания заданного количества пар дружественных чисел #32
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
#include <stdio.h>
#include <conio.h>
void main ()
{ int pairs;
  int count=0;
  int x=1, y;
  int sum;
  int i;
  printf ("vvedite chislo gfh:");
  scanf ("%d", pairs);
  while (count!=pairs)
 { x++;
  y=0;
  sum=0;
  for (i=1; i<=x/2; i++)
     if (x%i==0)
    y=i+y;
  for (i=1; i<=y/2; i++)
     if (y%i==0)
    sum=i+sum;
  if (sum==x && x!=y)
  {count++;
   printf ("pair %d:%d %d\n", count, x, y);
   x=y+1;
  }
  }
 getch ();
}
вот код для программы дружественные числа. но она немного не так работает, когда ввожу искать 2 пары дружественных чисел, он ищет 5 и потом опять эти 5 и так повторяется бесконечно. как сделать так, чтобы он находил столько пар, сколько задашь?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.11.2010, 15:45     Программа для отыскания заданного количества пар дружественных чисел
Еще ссылки по теме:

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

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

Или воспользуйтесь поиском по форуму:
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
04.11.2010, 15:45     Программа для отыскания заданного количества пар дружественных чисел #33
scanf ("%d", &pairs);
Yandex
Объявления
04.11.2010, 15:45     Программа для отыскания заданного количества пар дружественных чисел
Ответ Создать тему
Опции темы

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