Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.89/18: Рейтинг темы: голосов - 18, средняя оценка - 4.89
0 / 0 / 0
Регистрация: 10.01.2016
Сообщений: 14
1

Найти все пары дружественных чисел в диапазоне [n1, n2]

10.01.2016, 23:14. Просмотров 3598. Ответов 8
Метки нет (Все метки)

Два натуральных числа называются дружественными, если каждое из них равно сумме простых делителей другого. Найти все пары дружественных чисел в диапазоне [n1,n2]. Попробовала написать, посмотрите пожалуйста
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
#include<stdio.h>
int main()
{
    int k, i, j, sum2, sum1;
    for  (i=n; i <n; i++)
    {
        sum1 = 0;
            for (k=1; k<i; k++)
            {
                if (i%k==0)
                sum1=sum1+1;
            }
        for(j=n; j<=n; j++)
        {
                sum2 = 0;
                for(k=1; k<j; k++)
                {
                    if (j%k==0)
                        sum2=sum2+k;
                    }
                if ((sum1==j)&&(sum2==i))
                    printf("%d %d\n", j, i);
        }
    }
    return 0;
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
10.01.2016, 23:14
Ответы с готовыми решениями:

Найти все пары дружественных чисел в диапазоне от 200 до 300
Помогите пожалуйста с решением задачи в С++. Вот условие: используя оператор цикла for, решить...

Найти все пары дружественных чисел, лежащих в диапазоне от 200 до 300
Нужно найти все пары дружественных чисел, лежащих в диапазоне от 200 до 300 Почему-то выдает...

Найти все пары дружественных чисел, лежащих в диапазоне от 200 до 300
Найти все пары дружественных чисел, лежащих в диапазоне от 200 до 300.

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

8
Эксперт C
25061 / 15565 / 3330
Регистрация: 24.12.2010
Сообщений: 33,732
11.01.2016, 00:07 2
Строчка 11 sum1 = sum1 + k; // или sum1 += k;
Строчка 13 for(j=i+1; j<=n2; j++)
Строчка 5 for(i=n1; i<n2; i++)
Это то, что заметил

Добавлено через 1 минуту
Да, еще делители по условию должны быть простыми. А ты считаешь все делители
1
0 / 0 / 0
Регистрация: 10.01.2016
Сообщений: 14
11.01.2016, 00:18  [ТС] 3
а как написать, что они простые?
0
Эксперт C
25061 / 15565 / 3330
Регистрация: 24.12.2010
Сообщений: 33,732
11.01.2016, 01:15 4
C++
1
2
3
4
5
6
7
8
int Prim(int m)
{
   if (m==2) return 1;
   if (m==1 || m%2==0) return 0;
   for(int i=3; i*i <= m; i+=2)
      if (m%i==0) return 0;
   return 1;
}
0
0 / 0 / 0
Регистрация: 10.01.2016
Сообщений: 14
11.01.2016, 11:17  [ТС] 5
Спасибо огромное!
0
0 / 0 / 0
Регистрация: 07.02.2016
Сообщений: 3
09.02.2016, 19:15 6
помогите плиз решить задачу

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

Пример:

Программа выводящая на экран дружественные числа.
Введите нижнюю границу диапазона -> 1
Введите верхнюю границу диапазона -> 5000
Дружественные числа:
6 - 6
28 - 28
220 - 284
284 - 220
496 - 496
1184 - 1210
1210 - 1184
2620 - 2924
2924 - 2620
0
0 / 0 / 0
Регистрация: 07.11.2016
Сообщений: 2
06.04.2017, 15:03 7
а в Матлабе как это сделать?
0
0 / 0 / 0
Регистрация: 16.06.2019
Сообщений: 1
20.08.2019, 11:38 8
я новичек, работает с таким кодом

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
43
#include <iostream>
#include <windows.h>
using namespace std;
 
 
int main()
{
    int numh, numl, sum1, sum2, k, j, i;
    SetConsoleOutputCP(1251);
    cout << "Программа выводящая на экран дружественные числа.\n";
    cout << "Введите нижнюю границу диапазона ->";
    cin >> numl;
    cout << "Введите верхнюю границу диапазона ->";
    cin >> numh;
    for (i = numl; i < numh; i++)
    {
        sum1 = 0;
        for (k = 1; k < i; k++)
        {
            if (i % k == 0)
            {
                sum1 += k;
            }
 
        }
        for (j = numh; j > numl; --j)
        {
            sum2 = 0;
            {
                for (k = 1; k < j; k++)
                    if (j % k == 0)
                    {
                        sum2 += k;
                    }
                if (sum1 == j && sum2 == i)
                    cout << j << "-" << i << endl;
                }
        }
        
 
    }
 
}
уверен что все это оптимизируется, буду рад видеть другие решения если тема еще не умерла
0
5209 / 3541 / 2101
Регистрация: 18.12.2017
Сообщений: 11,255
20.08.2019, 14:38 9
Цитата Сообщение от ArtemA1 Посмотреть сообщение
буду рад видеть другие решения
Найти дружественные числа, принадлежащие отрезку [1; 10000]
3
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
20.08.2019, 14:38

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Функция находящая все пары дружественных чисел, лежащих в диапазоне от n до m
Даны натуральные числа n и m. Найти все пары дружественных чисел, лежащих в диапазоне от n до m....

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

Найти все пары дружественных числе, лежащих в диапазоне от 200 до 300
Найти все пары дружественных числе, лежащих в диапазоне от 200 до 300. Можно полностью готовую...

Найти все пары дружественных натуральных чисел из интервала от N 1 до N 2.
Очень нужна помощь!) Помогите пожалуйста) в С++, visual studio учусь на первом курсе мех-мата: ...


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

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

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