Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 5.00
KpoccoB0K
1 / 1 / 0
Регистрация: 08.02.2010
Сообщений: 22
#1

Найти на промежутке от 1 до N все числа, взаимно простые с N - C++

03.06.2010, 11:47. Просмотров 1167. Ответов 17
Метки нет (Все метки)

Ребят, помогите пожалуйста с простыми числами.

задача: дайтся число от 1(n). найти в промежутке между 1 и n все простые числа с n.
То есть надо найти те числа, у которых с n самый большой делитель =1.
3 дня не могу добится результата, завтра сдавать, спасите!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.06.2010, 11:47
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Найти на промежутке от 1 до N все числа, взаимно простые с N (C++):

Найти все натуральные числа, меньшие заданного числа и взаимно простые с ним - C++
Дано натуральное число n. Необходимо получить все натуральные числа, меньшие nn и взаимно простые с ним (два натуральных числа называются...

Найти все натуральные числа меньше n и взаимно простые с ним - C++
Прошу помочь написать программу на с++. Само здание: Дано натуральное число n. Получить все натуральные числа меньше n и взаимно простые с...

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

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

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

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

17
neske
1505 / 872 / 84
Регистрация: 26.03.2010
Сообщений: 2,986
03.06.2010, 12:00 #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
#include <iostream>
bool func (int, int);
 
int main()
{
    int val;
    std::cout << "Input number: ";
    std::cin >> val;
 
    std::cout << "Found: ";
    for (int i=1; i<=val; i++)
        if (func (val, i)) std::cout << i << " ";
 
    std::cout << std::endl;
    system ("pause");
    return 0;
}
 
bool func (int val, int i)
{
    for (int j=2; j<val; j++)
        if (!(val%j) && !(i%j)) return false;
    return true;
}
2
KpoccoB0K
1 / 1 / 0
Регистрация: 08.02.2010
Сообщений: 22
03.06.2010, 12:21  [ТС] #3
да не особо так... надо ВЫВЕСТИ те числа у которых с данным числом максимальный ОБЩИЙ делитель равен 1.

то что у Вас написано, выдаёт результат
"21"
что ни к селу ни к городу.

к примеру если задано число "20", то на экран выводятся числа:
3 7 9 11 13 17 19
0
neske
1505 / 872 / 84
Регистрация: 26.03.2010
Сообщений: 2,986
03.06.2010, 12:24 #4
к примеру если задано число "20", то на экран выводятся числа:
3 7 9 11 13 17 19
А какие еще общие делители есть?
1
KpoccoB0K
1 / 1 / 0
Регистрация: 08.02.2010
Сообщений: 22
03.06.2010, 12:26  [ТС] #5
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream.h>
#include <conio.h>
int i,n;
main(){
    cout<<"n="; cin>>n;
    for (i=1;i<=n;i++)
        if(n%i!=0)
            if((i%2!=0)&&(n%2!=0))
            if((i%3!=0)&&(n%3!=0))
            if((i%5!=0)&&(n%5!=0))
                        if((i%7!=0)&&(n%7!=0))
                cout<<i<<" ";
getch();
}


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

Добавлено через 39 секунд
Цитата Сообщение от neske Посмотреть сообщение
А какие еще общие делители есть?
не понял вопроса?... общий делительно только один, и он равен 1 !
0
neske
1505 / 872 / 84
Регистрация: 26.03.2010
Сообщений: 2,986
03.06.2010, 12:28 #6
Вы вводите число 20.
Нужно найти все числа на промежутке 1..20, у которых с числом 20 будет максимальный общий делитель единица.

к примеру если задано число "20", то на экран выводятся числа:
3 7 9 11 13 17 19
Вы говорите неверно.
Я вас и спрашиваю, в таком случае назовите мне еще общие делители для пар (3,20), (7,20) и т.п., не считая единицу?
Жду.
1
KpoccoB0K
1 / 1 / 0
Регистрация: 08.02.2010
Сообщений: 22
03.06.2010, 12:43  [ТС] #7
общих больше нету вроде(упор делаю на свои математические знания).
3 и 20, 7 и 20. кроме 1 больше ничего нету.
0
neske
1505 / 872 / 84
Регистрация: 26.03.2010
Сообщений: 2,986
03.06.2010, 12:44 #8
А что вы мне тогда говорите?
Программа работает правильно.

3 7 9 11 13 17 19, с каждым из них с числом 20 будет один общий делитель, единица.
1
KpoccoB0K
1 / 1 / 0
Регистрация: 08.02.2010
Сообщений: 22
03.06.2010, 12:46  [ТС] #9
Ваша программа выдала мне результат: 21.

при чём тут вообще 21? что оно означает? я этого не могу понять.
0
neske
1505 / 872 / 84
Регистрация: 26.03.2010
Сообщений: 2,986
03.06.2010, 12:49 #10
KpoccoB0K, Какое число вы ввели?

Что все не так?
1
Миниатюры
Найти на промежутке от 1 до N все числа, взаимно простые с N  
neske
1505 / 872 / 84
Регистрация: 26.03.2010
Сообщений: 2,986
03.06.2010, 12:53 #11
Тут еще кнопка есть, сказать спасибо.
1
KpoccoB0K
1 / 1 / 0
Регистрация: 08.02.2010
Сообщений: 22
03.06.2010, 12:54  [ТС] #12
может проблема в том что я немного изменил ваш код из-за того что у нас скорее всего компиляторы не соответсвуют... может из-за этого и результат другой.


тогда будет небольшая просьба.. я сейчас в колледже сижу, поэтому компилятор стандартный(Turbo C++).

если Вам не сложно, то оптимизируйте её под стандартный компилятор, потому что я много чего не понял из того кода....
0
neske
1505 / 872 / 84
Регистрация: 26.03.2010
Сообщений: 2,986
03.06.2010, 12:58 #13
Код.
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
#include <iostream>
bool func (int, int); // прототип к функции.
 
int main()
{
    int val;
    std::cout << "Input number: ";
    std::cin >> val; // вводим число.
 
    std::cout << "Found: ";
    for (int i=1; i<=val; i++)
        if (func (val, i)) std::cout << i << " "; // если функция возвратила значениу true - выводим i на экран.
 
    std::cout << std::endl;
    system ("pause");
    return 0;
}
 
bool func (int val, int i)
{
    for (int j=2; j<val; j++)
        if (!(val%j) && !(i%j)) return false;
    // аналогично: if ((val%j==0) && (i%j==0)) return false;
    // то есть, если мы нашли общий делитель, отличный от единицы, то возвращаем false.
    // если мы прошли циклом до конца, но такого не нашли, возвращаем true.
    return true;
}

Посмотрите, я думаю понятней будет.
в Turbo C++ по идее должно работать, но всякое бывает.
1
KpoccoB0K
1 / 1 / 0
Регистрация: 08.02.2010
Сообщений: 22
03.06.2010, 13:06  [ТС] #14
в Turbo C++ выдаёт ошибку на bool func (int val, int i)
а после if (!(val%j) && !(i%j)) вообще ничего не выдаёт.

Добавлено через 43 секунды
то есть у меня почему-то двойное условие для if не работает((( *бъется об стенку*

Добавлено через 1 минуту
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.h>
#include <conio.h>
int val,i;
int func(int, int)
{
    for (int j=2; j<val; j++)
    if ((val%j!=0)&&(i%j!=0))
    return 0;
    else
    return 1;
}
 
 
int main()
{
clrscr();
    cout << "Input number: ";
    cin >> val;
 
    cout << "Found: ";
    for (int i=1; i<=val; i++)
    if (func (val, i)) cout << i << " ";
 
    cout << endl;
getch();
}
после этого кода от мне тупо выдает числа от 1 до 20.
0
neske
1505 / 872 / 84
Регистрация: 26.03.2010
Сообщений: 2,986
03.06.2010, 13:08 #15
СТрочка #7 неверно, так должно быть:
C++
1
if ((val%j==0)&&(i%j==0))
1
03.06.2010, 13:08
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.06.2010, 13:08
Привет! Вот еще темы с ответами:

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

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

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

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


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

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

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