Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.94/16: Рейтинг темы: голосов - 16, средняя оценка - 4.94
OffSide
2 / 2 / 1
Регистрация: 03.10.2010
Сообщений: 111
#1

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

03.10.2010, 13:30. Просмотров 2812. Ответов 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
Ответы с готовыми решениями:

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

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

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

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

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

32
odip
Эксперт С++
7161 / 3220 / 76
Регистрация: 17.06.2009
Сообщений: 14,161
03.10.2010, 15:02 #2
Что уже написал ?
0
OffSide
2 / 2 / 1
Регистрация: 03.10.2010
Сообщений: 111
03.10.2010, 15:04  [ТС] #3
препод в универе сказала, что сначала напиши как бы 1 часть, просто прогу, чтобы находила делители числа, а потом уже последовательно написать и общую прогу, ну я захотел сачкануть и слить с инета, но нигде не нашел подобных и решил создать тему
0
PointsEqual
ниначмуроФ
838 / 522 / 110
Регистрация: 12.10.2009
Сообщений: 1,915
03.10.2010, 15:48 #4
OffSide, а 12 и 16 не являются дружественными?
0
OffSide
2 / 2 / 1
Регистрация: 03.10.2010
Сообщений: 111
03.10.2010, 15:49  [ТС] #5
Цитата Сообщение от PointsEqual Посмотреть сообщение
OffSide, а 12 и 16 не являются дружественными?

являются)) нужно программу составить)))
0
PointsEqual
ниначмуроФ
838 / 522 / 110
Регистрация: 12.10.2009
Сообщений: 1,915
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
OffSide
2 / 2 / 1
Регистрация: 03.10.2010
Сообщений: 111
03.10.2010, 15:57  [ТС] #7
все ништяк было бы)) если я не был бы первокурсником своего универа, и не начинал после школьного паскаля, переучиваться на С)) поэтому мы начинаем вписывать проги с шаблонов, вводя все подряд))
0
PointsEqual
ниначмуроФ
838 / 522 / 110
Регистрация: 12.10.2009
Сообщений: 1,915
03.10.2010, 16:01 #8
Цитата Сообщение от OffSide Посмотреть сообщение
все ништяк было бы)) если я не был бы первокурсником своего универа, и не начинал после школьного паскаля, переучиваться на С)) поэтому мы начинаем вписывать проги с шаблонов, вводя все подряд))
а вопрос то в чем, что еще надо сделать?
0
OffSide
2 / 2 / 1
Регистрация: 03.10.2010
Сообщений: 111
03.10.2010, 16:05  [ТС] #9
Цитата Сообщение от PointsEqual Посмотреть сообщение
а вопрос то в чем, что еще надо сделать?
ни в чем, просто препод нифига не поверит, что я смог составить такую прогу , таким способом) да и еще она сказала, что эта задача мне досталась самая сложная из всех по теме "Цикличность" и что её ни 1 первак не сделал сам
0
PointsEqual
ниначмуроФ
838 / 522 / 110
Регистрация: 12.10.2009
Сообщений: 1,915
03.10.2010, 16:07 #10
Цитата Сообщение от OffSide Посмотреть сообщение
таким способом)
а каким составляете?
0
Хохол
Эксперт С++
475 / 443 / 34
Регистрация: 20.11.2009
Сообщений: 1,292
03.10.2010, 16:09 #11
PointsEqual, вот так надо бы:
C++
1
 if (isfriendly(j,i) && isfriendly(i,j)){
Добавлено через 33 секунды
и вот так:
C++
1
return sx == y;
1
PointsEqual
ниначмуроФ
838 / 522 / 110
Регистрация: 12.10.2009
Сообщений: 1,915
03.10.2010, 16:17 #12
Цитата Сообщение от Хохол Посмотреть сообщение
return sx == y;
не первый раз на этом случае)
0
OffSide
2 / 2 / 1
Регистрация: 03.10.2010
Сообщений: 111
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
silent_1991
Эксперт С++
5007 / 3067 / 270
Регистрация: 11.11.2009
Сообщений: 7,043
Завершенные тесты: 1
03.10.2010, 16:26 #14
И начинающим неплохо бы учиться сразу писать int main() ... return 0; и не создавать глобальных переменных...
0
OffSide
2 / 2 / 1
Регистрация: 03.10.2010
Сообщений: 111
03.10.2010, 16:28  [ТС] #15
Цитата Сообщение от silent_1991 Посмотреть сообщение
И начинающим неплохо бы учиться сразу писать int main() ... return 0; и не создавать глобальных переменных...
как учат, так и прописываем
0
PointsEqual
ниначмуроФ
838 / 522 / 110
Регистрация: 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
Эксперт С++
2309 / 1682 / 148
Регистрация: 06.03.2009
Сообщений: 3,675
03.10.2010, 16:30 #17
Цитата Сообщение от OffSide Посмотреть сообщение
как учат, так и прописываем
Хреново учат. Прислушайтесь к словам silent_1991.
0
Хохол
Эксперт С++
475 / 443 / 34
Регистрация: 20.11.2009
Сообщений: 1,292
03.10.2010, 16:33 #18
C++
1
if (isfriendly(j,i) !=0 && isfriendly(i,j)  !=0)
Ну а с нулем-то зачем сравнивать?
0
PointsEqual
ниначмуроФ
838 / 522 / 110
Регистрация: 12.10.2009
Сообщений: 1,915
03.10.2010, 16:34 #19
Цитата Сообщение от Хохол Посмотреть сообщение
Ну а с нулем-то зачем сравнивать?
хотел чтобы было понятней, и у OffSide приняли программу
0
OffSide
2 / 2 / 1
Регистрация: 03.10.2010
Сообщений: 111
03.10.2010, 16:38  [ТС] #20
Цитата Сообщение от CyBOSSeR Посмотреть сообщение
Хреново учат. Прислушайтесь к словам silent_1991.
хорошо, щас скачал книгу Харви Дейтел, Пол Дейтел "КАК ПРОГРАММИРОВАТЬ НА C++ " говорят, норм для начинающих..

Добавлено через 4 минуты
Цитата Сообщение от PointsEqual Посмотреть сообщение
хотел чтобы было понятней, и у OffSide приняли программу
спасибо большое!
0
03.10.2010, 16:38
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.10.2010, 16:38

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

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

Найти все перестановки заданного количества различных натуральных чисел
Дано n различных натуральных чисел. Напечатать все перестановки этих чисел с...


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

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

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