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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 158, средняя оценка - 4.62
coreshok
3 / 3 / 0
Регистрация: 23.12.2011
Сообщений: 55
#1

Как выразить условие в операторе if для нахождения простого числа - C++

04.07.2012, 21:15. Просмотров 20810. Ответов 50
Метки нет (Все метки)

Приветствую вас!Уважаемые, подскажите пожалуйста как выразить условие в операторе if для нахождения простого числа, с помощью логических и операторов отношений.Если это возможно.Без массивов.Мне нужна просто маленькая подсказка, а остальное я хочу сам допетрить.В голове все знаю и понимаю как эти числа находятся, но не могу выразить в алгоритме кода .Язык С++.Заранее благодарен!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.07.2012, 21:15     Как выразить условие в операторе if для нахождения простого числа
Посмотрите здесь:
Использование второй функции для нахождения простого числа и её ошибки C++
C++ Каково будет условие вывода на экран простого числа( оно делится только на 1 и на себя)
C++ Условие в операторе switch
C++ Как выразить из числа Arc tg
Функция для простого числа C++
как правильно в программке записать условие нахождения бесконечности? C++
написать программу для прверки простого числа. язык программировние С C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Alt_Shift
50 / 50 / 2
Регистрация: 28.05.2012
Сообщений: 161
04.07.2012, 21:24     Как выразить условие в операторе if для нахождения простого числа #2
C++
1
2
3
4
5
6
7
8
9
10
int a,sum=0;
cin>>a;
for(int i=1;i<a;i++)
{
if(a%i==0)
sum++;
}
if(sum>1);
else
cout<<"Простое"
soon
2540 / 1305 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
04.07.2012, 21:54     Как выразить условие в операторе if для нахождения простого числа #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
48
49
50
51
52
#include <iostream>
#include <cstdlib>
 
template <std::size_t N, std::size_t Current>
struct _Prime
{
    static const bool is_prime =    (
                                        (N % Current) ? 
                                            (_Prime<N, Current - 1>::is_prime) :
                                            (false)
                                    );
};
 
template <std::size_t N>
struct _Prime<N, 1>
{
    static const bool is_prime = true;
};
 
template <std::size_t N>
struct _Prime<N, 0>
{
    static const bool is_prime = true;
};
 
template <std::size_t N>
struct Prime
{
    static const bool is_prime = _Prime<N, N / 2>::is_prime;
};
 
template <>
struct Prime<1>
{
    static const bool is_prime = false;
};
 
template <>
struct Prime<0>
{
    static const bool is_prime = false;
};
 
int main()
{
    std::cout << Prime<1>::is_prime << std::endl;
    std::cout << Prime<2>::is_prime << std::endl;
    std::cout << Prime<3>::is_prime << std::endl;
    std::cout << Prime<4>::is_prime << std::endl;
    std::cout << Prime<97>::is_prime << std::endl;
    return 0;
}
coreshok
3 / 3 / 0
Регистрация: 23.12.2011
Сообщений: 55
04.07.2012, 22:43  [ТС]     Как выразить условие в операторе if для нахождения простого числа #4
Уважаемый soon! Спасибо за отзыв,но для меня не постижимы пока такие алгоритмы.Я не сдаю экзамены по программированию,я просто для себя.Хотелось бы по проще,чтобы самому разобраться с циклом for и оператором if-else.А этот алгоритм для меня как набор неизвестных мне символов.
soon
2540 / 1305 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
05.07.2012, 06:57     Как выразить условие в операторе if для нахождения простого числа #5
coreshok, попроще вам представил Alt_Shift.
PSIAlt
86 / 86 / 8
Регистрация: 19.06.2012
Сообщений: 245
05.07.2012, 08:10     Как выразить условие в операторе if для нахождения простого числа #6
soon, вы считаете копипаст который вы отпостили юзабельным?
Catstail
Модератор
22515 / 10920 / 1774
Регистрация: 12.02.2012
Сообщений: 18,067
05.07.2012, 09:23     Как выразить условие в операторе if для нахождения простого числа #7
soon шутит... Вот простое решение, которое ищет все простые числа в диапазоне от 1 до n. Называется "решето Эратосфена":

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
#include "iostream.h"
#include "math.h"
 
int main(int argc, char* argv[])
{
    int *Rg;
    int i,j,n;
 
    cout << "Enter n: ";
    cin >> n;
 
    Rg=new int[n];
 
    for (i=0; i<n; i++) Rg[i]=i;
 
    for (j=2; j <= sqrt(n); j++)
        for (i=1; i<n; i++)
            if (((i % j) == 0) && (i != j)) Rg[i]=0;
 
    cout << "Primary numbers in range [1," << n <<"] are:" << endl;
 
    for (i=1; i < n; i++) 
        if (Rg[i] > 0) cout << Rg[i] << endl;
 
    delete [] Rg;
 
    return 0;
}
soon
2540 / 1305 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
05.07.2012, 17:42     Как выразить условие в операторе if для нахождения простого числа #8
PSIAlt, А) где копипаст? Б) да, считаю.
coreshok
3 / 3 / 0
Регистрация: 23.12.2011
Сообщений: 55
05.07.2012, 18:47  [ТС]     Как выразить условие в операторе if для нахождения простого числа #9
Я высоко оценил чувство юмора soon!Я тоже любитель пошутить!Но глядя на фрагмент кода, который предоставил Alt_Shift(спасибо ему за это) и который рекомендовал мне в качестве простого решения soon, хотелось бы выразить свое мнение по поводу корректности написания этого кода. Он просто не работает. Я в своем вопросе не так выразился.Задача была найти простые числа в диапазоне от 1 до 100.Это условие должно быть заключено в цикл for c операторами if.Сейчас я вижу как это работает.Это возможно выразить без массивов и указателей.До скорого!

Добавлено через 1 час 0 минут
Я рискну немного поправить ваш код уважаемый Catstail.Так как единица не является простым числом, то в первом цикле for начальное значение счетчика i можно установить 2.
diagon
Higher
1928 / 1194 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
05.07.2012, 19:12     Как выразить условие в операторе if для нахождения простого числа #10
Цитата Сообщение от coreshok Посмотреть сообщение
Я высоко оценил чувство юмора soon!Я тоже любитель пошутить!Но глядя на фрагмент кода, который предоставил Alt_Shift(спасибо ему за это) и который рекомендовал мне в качестве простого решения soon, хотелось бы выразить свое мнение по поводу корректности написания этого кода.
Просто - не всегда эффективно.
В #2 очень неэффективный вариант, он работает за квадратичную сложность, в то время как у нормальных алгоритмов сложность меньше линейной.
У soon представлен вариант с проверкой числа на простоту во время компиляции, ничего быстрее этого способа быть не может(для данного интервала будет относительно недолгая компиляция).

Кстати, я так и не понял, вам нужно найти простые числа, или проверить на простоту?
coreshok
3 / 3 / 0
Регистрация: 23.12.2011
Сообщений: 55
05.07.2012, 19:40  [ТС]     Как выразить условие в операторе if для нахождения простого числа #11
Ну конечно же простое число.Может меня не правильно понимают.Я уже третий пост пишу со словами "простые числа".Это числа которые делятся на 1 и на само себя.

Добавлено через 2 минуты
Что вы имели ввиду под словами"В #2 очень неэффективный вариант", здесь три варианта.

Добавлено через 10 минут
Уважаемый diagon и многоуважаемые корифеи в программировании.Спуститесь на землю.Я попросил всего лишь описание работы цикла for и операторов if при нахождении простых чисел в диапазоне от 1 до ста.Без массивов, без операции разрешения, без указателей и т.д.Мне не важно как быстро будет проходить компиляция и как быстро будет выполнятся программа.С уважением!
soon
2540 / 1305 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
05.07.2012, 19:47     Как выразить условие в операторе if для нахождения простого числа #12
Цитата Сообщение от coreshok Посмотреть сообщение
Ну конечно же простое число.Может меня не правильно понимают.Я уже третий пост пишу со словами "простые числа".Это числа которые делятся на 1 и на само себя.
Вам нужно найти все простые числа в заданном промежутке или просто проверить, является ли данное число простым?
Цитата Сообщение от coreshok Посмотреть сообщение
Что вы имели ввиду под словами"В #2 очень неэффективный вариант", здесь три варианта.
Первый представленный код.
Цитата Сообщение от diagon Посмотреть сообщение
он работает за квадратичную сложность
Разве? Там ведь один проход.
Уважаемый diagon и многоуважаемые корифеи в программировании.Спуститесь на землю.Я попросил всего лишь описание работы цикла for и операторов if при нахождении простых чисел в диапазоне от 1 до ста.Без массивов, без операции разрешения, без указателей и т.д.Мне не важно как быстро будет проходить компиляция и как быстро будет выполнятся программа.С уважением!
Нуу, это скучно. К тому же вам Catstail представил решето Эратосфена.
Без массивов
Смысл в этих числах, если их нельзя будет потом использовать?
coreshok
3 / 3 / 0
Регистрация: 23.12.2011
Сообщений: 55
05.07.2012, 20:12  [ТС]     Как выразить условие в операторе if для нахождения простого числа #13
Позволю себе закинуть вам леща! Мне понравились слова "Нуу, это скучно. К тому же вам Catstail представил решето Эратосфена"и "Смысл в этих числах, если их нельзя будет потом использовать?".Это говорит обо всем)))

Добавлено через 3 минуты
Ребята, а может чтобы вам не было скучно я вам задачки веселые буду закидывать. У меня их много!!!
Catstail
Модератор
22515 / 10920 / 1774
Регистрация: 12.02.2012
Сообщений: 18,067
05.07.2012, 20:47     Как выразить условие в операторе if для нахождения простого числа #14
Цитата Сообщение от diagon Посмотреть сообщение
вариант с проверкой числа на простоту во время компиляции, ничего быстрее этого способа быть не может
- почему же? Чтобы проверить число на простоту нужно выполнить определенный объем вычислительной работы. Какая разница, когда она выполняется? А если нужно проверять простоту неизвестного заранее количества чисел, это можно выполнить at compile time? Не думаю...

Просто - не всегда эффективно. Согласен. Но вопрос ведь не предполагал реализацию самого эффективного алгоритма... А решето Эратосфена - это классика.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.07.2012, 21:18     Как выразить условие в операторе if для нахождения простого числа
Еще ссылки по теме:
функции для вычисления среднего значения и определения простого числа C++
C++ Создать функции для вычисления среднего значения и определения простого числа.
Составить программу для нахождения числа, которое образуется из данного натурального числа при записи его цифр в обратном порядке C++
C++ Программа для нахождения числа
C++ Макрос для нахождения наибольшего числа

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

Или воспользуйтесь поиском по форуму:
soon
2540 / 1305 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
05.07.2012, 21:18     Как выразить условие в операторе if для нахождения простого числа #15
Какая разница, когда она выполняется?
Разница есть, либо каждый раз вычислять, либо просто вывести. Но если теоретически в первом варианте можно получить любое простое число, то во втором для этого потребуется перекомпиляция.
А если нужно проверять простоту неизвестного заранее количества чисел, это можно выполнить at compile time?
Если их количество неизвестно во время компиляции - разумеется, нет. В противном случае существует алгоритм, и ForEveR уже представлял его.
Yandex
Объявления
05.07.2012, 21:18     Как выразить условие в операторе if для нахождения простого числа
Ответ Создать тему
Опции темы

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