Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.54/26: Рейтинг темы: голосов - 26, средняя оценка - 4.54
2 / 2 / 1
Регистрация: 03.10.2010
Сообщений: 108
1

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

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

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

Помогите решить.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
03.10.2010, 13:30
Ответы с готовыми решениями:

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

Из заданного интервала натуральных чисел выбрать и напечатать все пары дружественных чисел
Из заданного интервала натуральных чисел выбрать и напечатать все пары дружественных чисел. (Два...

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

Программа для подсчета общего количества слов во введенной строке, а также количества целых чисел среди них
Помогите, пожалуйста, написать программу для подсчета общего количества слов во введенной строке,...

32
Эксперт С++
7175 / 3234 / 81
Регистрация: 17.06.2009
Сообщений: 14,164
03.10.2010, 15:02 2
Что уже написал ?
0
2 / 2 / 1
Регистрация: 03.10.2010
Сообщений: 108
03.10.2010, 15:04  [ТС] 3
препод в универе сказала, что сначала напиши как бы 1 часть, просто прогу, чтобы находила делители числа, а потом уже последовательно написать и общую прогу, ну я захотел сачкануть и слить с инета, но нигде не нашел подобных и решил создать тему
0
ниначмуроФ
851 / 535 / 110
Регистрация: 12.10.2009
Сообщений: 1,913
03.10.2010, 15:48 4
OffSide, а 12 и 16 не являются дружественными?
0
2 / 2 / 1
Регистрация: 03.10.2010
Сообщений: 108
03.10.2010, 15:49  [ТС] 5
Цитата Сообщение от PointsEqual Посмотреть сообщение
OffSide, а 12 и 16 не являются дружественными?

являются)) нужно программу составить)))
0
ниначмуроФ
851 / 535 / 110
Регистрация: 12.10.2009
Сообщений: 1,913
03.10.2010, 15:51 6
тогда вариант простым перебором
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
#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) )
            sx += i;
 
    return ( sx == y ) ? true : false;
}
 
 
 
int main()
{
    int cnt = 50; //первые 50
 
    int i = 2;
    while (cnt){
        int j = 1;
        while( j < i ){
            if (isfriendly(j,i)){
                --cnt;
                std::cout << j <<"," << i << std::endl;
            }
            ++j;
        }
        ++i;
    }
 
    return 0;
}
1
2 / 2 / 1
Регистрация: 03.10.2010
Сообщений: 108
03.10.2010, 15:57  [ТС] 7
все ништяк было бы)) если я не был бы первокурсником своего универа, и не начинал после школьного паскаля, переучиваться на С)) поэтому мы начинаем вписывать проги с шаблонов, вводя все подряд))
0
ниначмуроФ
851 / 535 / 110
Регистрация: 12.10.2009
Сообщений: 1,913
03.10.2010, 16:01 8
Цитата Сообщение от OffSide Посмотреть сообщение
все ништяк было бы)) если я не был бы первокурсником своего универа, и не начинал после школьного паскаля, переучиваться на С)) поэтому мы начинаем вписывать проги с шаблонов, вводя все подряд))
а вопрос то в чем, что еще надо сделать?
0
2 / 2 / 1
Регистрация: 03.10.2010
Сообщений: 108
03.10.2010, 16:05  [ТС] 9
Цитата Сообщение от PointsEqual Посмотреть сообщение
а вопрос то в чем, что еще надо сделать?
ни в чем, просто препод нифига не поверит, что я смог составить такую прогу , таким способом) да и еще она сказала, что эта задача мне досталась самая сложная из всех по теме "Цикличность" и что её ни 1 первак не сделал сам
0
ниначмуроФ
851 / 535 / 110
Регистрация: 12.10.2009
Сообщений: 1,913
03.10.2010, 16:07 10
Цитата Сообщение от OffSide Посмотреть сообщение
таким способом)
а каким составляете?
0
Эксперт С++
476 / 444 / 34
Регистрация: 20.11.2009
Сообщений: 1,293
03.10.2010, 16:09 11
PointsEqual, вот так надо бы:
C++
1
 if (isfriendly(j,i) && isfriendly(i,j)){
Добавлено через 33 секунды
и вот так:
C++
1
return sx == y;
1
ниначмуроФ
851 / 535 / 110
Регистрация: 12.10.2009
Сообщений: 1,913
03.10.2010, 16:17 12
Цитата Сообщение от Хохол Посмотреть сообщение
return sx == y;
не первый раз на этом случае)
0
2 / 2 / 1
Регистрация: 03.10.2010
Сообщений: 108
03.10.2010, 16:23  [ТС] 13
ну например:
Задача: Точка задана своими координатами (x,y). Опредедитель, попадает ли точка в круг радиуса R, центр которого расположен в начале координат. Считать, что окружность принадлежит кругу.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <stdio.h>
#include <math.h>
float x,y,Rt,R;
void main ()
   { // Ввод исходных данных
     printf ("/nВведите координаты точки n/")
     printf ("x="); scanf ("%f", &x);
     printf ("y="); scanf ("%f", &y);
     printf ("/n Введите радиус круга - ");
     scanf ("%f", &R);
     Rt=hypot (x,y);    //Rt^2=x^2+y^2
     if (Rt<=R)            //Вывод результатов
      { printf ("/nТочка (%5.2f,%5.2f) лежит"
       "внутри круга радиуса %5.2f /n", x,y,R);
       }
     else
       {printf("/nТочка (%5.2f,%5.2f) не принадлежит"
       "кругу радиуса %5.2f /n",x,y,R);
       }
   }
мы пишем просто, как начинающие)
0
Эксперт С++
5055 / 3115 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
03.10.2010, 16:26 14
И начинающим неплохо бы учиться сразу писать int main() ... return 0; и не создавать глобальных переменных...
0
2 / 2 / 1
Регистрация: 03.10.2010
Сообщений: 108
03.10.2010, 16:28  [ТС] 15
Цитата Сообщение от silent_1991 Посмотреть сообщение
И начинающим неплохо бы учиться сразу писать int main() ... return 0; и не создавать глобальных переменных...
как учат, так и прописываем
0
ниначмуроФ
851 / 535 / 110
Регистрация: 12.10.2009
Сообщений: 1,913
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
Эксперт С++
2347 / 1720 / 148
Регистрация: 06.03.2009
Сообщений: 3,675
03.10.2010, 16:30 17
Цитата Сообщение от OffSide Посмотреть сообщение
как учат, так и прописываем
Хреново учат. Прислушайтесь к словам silent_1991.
0
Эксперт С++
476 / 444 / 34
Регистрация: 20.11.2009
Сообщений: 1,293
03.10.2010, 16:33 18
C++
1
if (isfriendly(j,i) !=0 && isfriendly(i,j)  !=0)
Ну а с нулем-то зачем сравнивать?
0
ниначмуроФ
851 / 535 / 110
Регистрация: 12.10.2009
Сообщений: 1,913
03.10.2010, 16:34 19
Цитата Сообщение от Хохол Посмотреть сообщение
Ну а с нулем-то зачем сравнивать?
хотел чтобы было понятней, и у OffSide приняли программу
0
2 / 2 / 1
Регистрация: 03.10.2010
Сообщений: 108
03.10.2010, 16:38  [ТС] 20
Цитата Сообщение от CyBOSSeR Посмотреть сообщение
Хреново учат. Прислушайтесь к словам silent_1991.
хорошо, щас скачал книгу Харви Дейтел, Пол Дейтел "КАК ПРОГРАММИРОВАТЬ НА C++ " говорят, норм для начинающих..

Добавлено через 4 минуты
Цитата Сообщение от PointsEqual Посмотреть сообщение
хотел чтобы было понятней, и у OffSide приняли программу
спасибо большое!
0
03.10.2010, 16:38
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
03.10.2010, 16:38
Помогаю со студенческими работами здесь

Найти все пары дружественных чисел, которые не больше заданного К
Ввести в память машины с клавиатуры натуральное число К. Найти все пары дружественных чисел,...

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

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

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


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

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