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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 15, средняя оценка - 4.67
Ch3r3p0sha
0 / 0 / 0
Регистрация: 12.10.2009
Сообщений: 11
#1

Взаимно простые делители - C++

13.10.2009, 03:47. Просмотров 2053. Ответов 7
Метки нет (Все метки)

Даны целые числа p и q. Получить все делители числа q, взаимно простые с p, т.е. не имеющие с p общих делителей.
Помогите пожалуйста решить.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.10.2009, 03:47
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Взаимно простые делители (C++):

Получить все делители числа q, взаимно простые к p - C++
Даны натуральные числа p и q. Получить все делители числа q, взаимно простые к p. помогите пожалуйста.

Получить все делители числа q, взаимно простые с р - C++
3.Даны натуральные числа р и q. Получить все делители числа q, взаимно простые с р заранее спасибо

Даны целые числа р и q. Получить все делители числа q, взаимно простые с р. - C++
Даны целые числа р и q. Получить все делители числа q, взаимно простые с р. Решите на С++. Заранее спасибо!

Даны целые числа р и q. Получить все делители числа q, взаимно простые с р - C++
Получить все делители числа q, взаимно простые с р.

Даны натуральные числа p и q. Получить все делители числа q, взаимно простые к p. - C++
Даны натуральные числа p и q. Получить все делители числа q , взаимно простые к p.

Даны натуральные числа p и q. Получить все делители числа q, взаимно простые к p - C++
Даны натуральные числа p и q. Получить все делители числа q , взаимно простые к p. помогите сделать на с++

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
TanT
эволюционирую потихоньку
465 / 463 / 43
Регистрация: 30.06.2009
Сообщений: 1,399
13.10.2009, 06:44 #2
честно признаюсь долго не думал, поэтому стоит потестить. всё может оказатьс гораздо сложнее
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 "iostream"
 
using namespace std;
 
// Даны целые числа p и q. Получить все делители числа q, взаимно простые с p, т.е. не имеющие
// с p общих делителей.Помогите пожалуйста решить.
 
int main()
{
    int p , q;
    cout << "Enter p: ";    cin >> p;
    cout << "Enter q: ";    cin >> q;
    
    cout << "result: ";
    // все делители q
    for (int i=2;i<q;i++)
    {
        if(!(q%i))  // делиться без остатка
            if(p%i&&i%p)
                cout<<" "<<i;
    }
 
    cout << endl;
    system("PAUSE");
    return 0;
}
Ch3r3p0sha
0 / 0 / 0
Регистрация: 12.10.2009
Сообщений: 11
14.10.2009, 02:12  [ТС] #3
А как это записать в c++ ?
XuTPbIu_MuHTAu
Эксперт С++
2224 / 739 / 10
Регистрация: 27.05.2008
Сообщений: 1,508
14.10.2009, 03:08 #4
Цитата Сообщение от Ch3r3p0sha Посмотреть сообщение
А как это записать в c++ ?
Что,можно уже тему в юмор перетаскивать? Второй пост - код на си++.

Правда,там проверка на взаимною простоту неправильная...
TanT
эволюционирую потихоньку
465 / 463 / 43
Регистрация: 30.06.2009
Сообщений: 1,399
14.10.2009, 05:38 #5
Цитата Сообщение от XuTPbIu_MuHTAu Посмотреть сообщение
Правда,там проверка на взаимною простоту неправильная...
попытка номер 2.
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
#include "iostream"
 
using namespace std;
 
// Даны целые числа p и q. Получить все делители числа q, взаимно простые с p, т.е. не имеющие
// с p общих делителей.Помогите пожалуйста решить.
 
int main()
{
    int p , q;
    bool flag;
    cout << "Enter p: ";    cin >> p;
    cout << "Enter q: ";    cin >> q;
 
    cout << "result: ";
    // все делители q
    for (int i=2;i<q;i++)
    {
        if(!(q%i))      // делиться без остатка
        { i flag=true;
            for (int j=2; j<i; j++)
            {
                if (p%j&&i%j)
                    flag=false;
            }
            if (flag)
                    cout<<" ! "<<i<<endl;
        }
    }
 
    cout << endl;
    system("PAUSE");
    return 0;
}
XuTPbIu_MuHTAu, правильный варинт можно посмотреть, а лучше тестовую комбинацию скажите для проверки (с правильным ответом) ... и я своего допьюсь
XuTPbIu_MuHTAu
Эксперт С++
2224 / 739 / 10
Регистрация: 27.05.2008
Сообщений: 1,508
14.10.2009, 05:50 #6
Цитата Сообщение от TanT Посмотреть сообщение
XuTPbIu_MuHTAu, правильный варинт можно посмотреть, а лучше тестовую комбинацию скажите для проверки (с правильным ответом) ... и я своего допьюсь
Ну,допиваться так допиваться.Я собрал быстренько свою реализацию,ща накидаю тебе комбинаций ))

Код
15,35 - > 3
10, 5 - >    
12,60 -> 5
60,12 -> 
88,33 -> 3
15,12 -> 2,4
Добавлено через 1 минуту
И я бы все же вынес определение взаимной простоты в отдельную функцию
TanT
эволюционирую потихоньку
465 / 463 / 43
Регистрация: 30.06.2009
Сообщений: 1,399
14.10.2009, 08:36 #7
[QUOTE=XuTPbIu_MuHTAu;304905]
Код
15,35 - > 3
/QUOTE]
Даны целые числа p и q.
Получить все делители числа q, взаимно простые с p, т.е. не имеющие с p общих делителей.
q=15, p=35 (p на 3 не делиться)
делители 15: 3, 5
3 ? 35 - подходит
5 ? 35 - нет
это понятно мне

дальше
12,60 -> 5, а вот тут многозначительное эээээээ
но потом
60,12 -> наверно просто путаница

в итоге вот, дубль 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"
#include "cmath"
 
using namespace std;
 
// Даны целые числа p и q. Получить все делители числа q, взаимно простые с p, т.е. не имеющие
// с p общих делителей.
 
bool MutualSimple(int a, int b)
{
    a=abs(a); b=abs(b);
    if (a==1||b==1)
        return true;
    
    if (a==b)
        return false;
 
    for (int j=2; j<((a>b)?a:b); j++)
    {
        if (( !(b%j) )&&( !(a%j) ))
            return false;
    }
 
    return true;
}
 
int main()
{
    int p , q;
    bool flag;
    cout << "\nEnter p: ";    cin >> p;
    cout << "Enter q: ";    cin >> q;
 
    cout << "result: ";
    // все делители q
    for (int i=2;i<q;i++)
    {
        if(!(q%i))      // делиться без остатка
            if(MutualSimple(q/i, p))
                cout<<" ! "<<q/i<<endl;
 
    }
 
    cout << endl;
    system("PAUSE");
    return 0;
}
TanT
эволюционирую потихоньку
465 / 463 / 43
Регистрация: 30.06.2009
Сообщений: 1,399
04.12.2009, 05:39 #8
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
41
42
43
44
45
46
47
48
#include <stdio.h>
#include <math.h>
#include <conio.h>
 
#define FALSE 0
#define TRUE  1
// Даны целые числа p и q. Получить все делители числа q, взаимно простые с p, т.е. не имеющие
// с p общих делителей.
 
int MutualSimple(int a, int b)
{
    a=abs(a); b=abs(b);
    if (a==1||b==1)
        return TRUE;
 
    if (a==b)
        return FALSE;
 
    for (int j=2; j<((a>b)?a:b); j++)
    {
        if (( !(b%j) )&&( !(a%j) ))
            return FALSE;
    }
 
    return TRUE;
}
 
int main()
{
    int p , q;
    int flag;
    printf("Enter p: ");   scanf("%i",&p);
    printf("Enter q: ");    scanf("%i",&q);
 
    printf("result: ");
    // все делители q
    for (int i=2;i<q;i++)
    {
        if(!(q%i))      // делиться без остатка
            if(MutualSimple(q/i, p))
                printf(" !  %i\n",q/i);
 
    }
 
    
    getch();
    return 0;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.12.2009, 05:39
Привет! Вот еще темы с ответами:

не могу понять задачку :) Даны натуральные числа p и q. Получить все делители числа q, взаимно простые с p - C++
Даны натуральные числа p и q. Получить все делители числа q, взаимно простые с p.

Взаимно простые числа - C++
Задание таково:составить программу, отвечающую на вопрос, являются ли два произвольных натуральных числа взаимно простыми. на С++

взаимно простые числа - C++
Для двух натуральных чисел P и Q, меньших 1000000, напишите программу, которая определяет, числа являются взаемнопростимы (не имеют ...

Взаимно простые числа - C++
Два натуральных числа a и b называются взаимно простыми, если их наибольший общий делитель равен 1. Несколько натуральных чисел называются...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
04.12.2009, 05:39
Ответ Создать тему
Опции темы

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