Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Zimus
0 / 0 / 0
Регистрация: 20.10.2015
Сообщений: 26
1

Задано число. Найти пару чисел с наибольшим общим кратным, которые равны в сумме исходному числу

03.06.2016, 07:15. Просмотров 253. Ответов 4
Метки нет (Все метки)

Задано число. Найти пару чисел с наибольшим общим кратным, которые равны в сумме исходному числу
Pomogite ya Zapla4y

 Комментарий модератора 
Для заказа программ за деньги существует специальный раздел фриланса.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.06.2016, 07:15
Ответы с готовыми решениями:

Из всех пар простых чисел, сумма которых равна заданному числу, найти пару, содержащую наименьшее простое число
Известно, что любое чётное число, большее 2, представимо в виде суммы 2 простых чисел, причём таких...

Организовать ввод двух чисел, для которых заданное натуральное число является наибольшим общим делителем
Организовать ввод двух чисел, для которых заданное натуральное число является наибольшим общим...

do-while. рганизовать ввод двух чисел, для которых заданное натуральное число является наибольшим общим делителем
Организовать ввод двух чисел, для которых заданное натуральное число является наибольшим общим...

Найти натуральные числа которые равны сумме факториалов их цифр
помогите пожалуйста написать программу,которая найдет все натуральные числа,меньше чем MAXINT,...

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

4
TimeTwo
94 / 89 / 102
Регистрация: 29.11.2009
Сообщений: 394
03.06.2016, 08:51 2
Zimus, если я правильно понял что набиольшее общее кратное это пара чисел с наибольшим нок то так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
 
using namespace std;
 
int main()
{
    int number,nok=0,mem_i,mem_j;
    cout<<"input number: ";
    cin>>number;
    for (int i=1; i<=number;i++)
        for (int j=1; j<=number;j++)
            if(i+j==number)
                for(int k=2;k<i*j*100;k++)
                    if((!(k%j))&&(!(k%i))&&(k>nok)){
                        nok=k;
                        mem_i=i;
                        mem_j=j;
                    }
 
    cout<<"1)"<<mem_i<<endl<<"2)"<<mem_j<<endl<<"the biggest nok="<<nok;
    return 0;
}
1
Tenebris
2 / 2 / 1
Регистрация: 30.06.2015
Сообщений: 40
03.06.2016, 09:16 3
опоздал немного вроде должно работать
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
44
45
46
47
#include <iostream>
using namespace std;
 
int Nod(int a,int b)
{
    if(a<1||b<1)
        return 0;
 
    if(a>b)
        return Nod(a-b,b);
    if(a<b)
        return Nod(b-a,a);
    if(a==b)
        return a;
}
int maxNok(int a,int b)
{
    int nd = Nod(a,b);
    if(nd==0)
        return 0;
    return a*b/nd;
}
int main()
{
    int i;
    cin>>i;
    if(i%2)
        cout<<"n1 = "<<i/2+1<<" n2 ="<<i/2;
    else
    {
        if(i==2)
            cout<<"n1 = 1 n2 = 1";//не хочу менять дреое
        else
        {
           int z = i/2;
            int v1,v2;
            v1 = maxNok(z-1,z+1);
            v2 = maxNok(z-2,z+2);
            if(v1>v2)
                cout<<"n1 = "<<z-1<<" n2 ="<<z+1;
            else
                cout<<"n1 = "<<z-2<<" n2 ="<<z+2;
        }
 
    }
    return 0;
}
PS Интересно чьё решение быстрее работает?)

Добавлено через 11 минут
PS2 Я в своё ввел число 1580(от балды) ответ через 3с(с учетом времени ввода) ,а твоё решение ушло в работу надолго(пока я писал не определилось).
+вводил простые числа вроде 10 ответ должен быть 3 и 7, а у тебя 5 и 5.
0
SpBerkut
Объявлятель переменных
948 / 274 / 276
Регистрация: 24.09.2011
Сообщений: 1,009
Завершенные тесты: 2
03.06.2016, 09:51 4
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
 
unsigned int gcd(const unsigned int a, const unsigned int b) { 
    return b ? gcd(b, a%b) : a; 
} 
 
int main()
{
    unsigned int x, curgcd = 1, a, b;
    std::cout << "X: "; std::cin >> x;
    a = x; b = 0;
    for (int i = x-1; i > x/2; i--) {
        if (gcd(i, x-i) > curgcd) {
            curgcd = gcd(i, x-i);
            a = i; b = x-i;
        }
    }
    
    std::cout << a << " " << b;
}
Цитата Сообщение от Tenebris Посмотреть сообщение
вводил простые числа вроде 10 ответ должен быть 3 и 7, а у тебя 5 и 5
Вообще-то ответ должен быть либо 2 и 8, либо 4 и 6, т.к. у этих пар НОК = 2. А у вас обоих НОК = 1.
0
Zimus
0 / 0 / 0
Регистрация: 20.10.2015
Сообщений: 26
03.06.2016, 10:06  [ТС] 5
спасибо, ваш ответ сработал, правда пришлось добавить библиотеку <conio.h> и в конце прописать _getch();
0
03.06.2016, 10:06
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.06.2016, 10:06

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

Дано вещественное число R и массив вещественных чисел. Найти 2 элементы массива, которые наименее близки к данному числу R
Дано вещественное число R и массив вещественных чисел. Найти 2 элементы массива, которые наименее...

Найти комбинации трех положительных чисел в сумме равных заданному числу
Найти все положительные числа A, B, C, в сумме равные числу D.


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

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

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