Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.65/173: Рейтинг темы: голосов - 173, средняя оценка - 4.65
3 / 3 / 0
Регистрация: 23.12.2011
Сообщений: 55

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

04.07.2012, 21:15. Показов 34937. Ответов 51
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Приветствую вас!Уважаемые, подскажите пожалуйста как выразить условие в операторе if для нахождения простого числа, с помощью логических и операторов отношений.Если это возможно.Без массивов.Мне нужна просто маленькая подсказка, а остальное я хочу сам допетрить.В голове все знаю и понимаю как эти числа находятся, но не могу выразить в алгоритме кода .Язык С++.Заранее благодарен!
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
04.07.2012, 21:15
Ответы с готовыми решениями:

Программа для нахождения наименьшего простого трехзначного числа
function f(a:integer):byte; var i:integer; begin result:=1; i:=2; while (i*i<=a)and(result=1) do if a mod i=0 then...

Использование второй функции для нахождения простого числа и её ошибки
Здравствуйте! Помогите разобраться с функциями, имеющие возвращающие значение. Суть программы в том, что она считывает число и...

Как правильно написать условие для простого калькулятора
Данная программа - простой калькулятор. Она должна складывать числа типа int и double. Я делал вводимое типом decimal, но должного не...

51
 Аватар для Alt_Shift
51 / 51 / 20
Регистрация: 28.05.2012
Сообщений: 161
04.07.2012, 21:24
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<<"Простое"
1
 Аватар для soon
2554 / 1319 / 178
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
04.07.2012, 21:54
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;
}
2
3 / 3 / 0
Регистрация: 23.12.2011
Сообщений: 55
04.07.2012, 22:43  [ТС]
Уважаемый soon! Спасибо за отзыв,но для меня не постижимы пока такие алгоритмы.Я не сдаю экзамены по программированию,я просто для себя.Хотелось бы по проще,чтобы самому разобраться с циклом for и оператором if-else.А этот алгоритм для меня как набор неизвестных мне символов.
0
 Аватар для soon
2554 / 1319 / 178
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
05.07.2012, 06:57
coreshok, попроще вам представил Alt_Shift.
0
 Аватар для PSIAlt
87 / 87 / 1
Регистрация: 19.06.2012
Сообщений: 245
05.07.2012, 08:10
soon, вы считаете копипаст который вы отпостили юзабельным?
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38161 / 21096 / 4306
Регистрация: 12.02.2012
Сообщений: 34,680
Записей в блоге: 14
05.07.2012, 09:23
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;
}
1
 Аватар для soon
2554 / 1319 / 178
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
05.07.2012, 17:42
PSIAlt, А) где копипаст? Б) да, считаю.
0
3 / 3 / 0
Регистрация: 23.12.2011
Сообщений: 55
05.07.2012, 18:47  [ТС]
Я высоко оценил чувство юмора soon!Я тоже любитель пошутить!Но глядя на фрагмент кода, который предоставил Alt_Shift(спасибо ему за это) и который рекомендовал мне в качестве простого решения soon, хотелось бы выразить свое мнение по поводу корректности написания этого кода. Он просто не работает. Я в своем вопросе не так выразился.Задача была найти простые числа в диапазоне от 1 до 100.Это условие должно быть заключено в цикл for c операторами if.Сейчас я вижу как это работает.Это возможно выразить без массивов и указателей.До скорого!

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

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

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

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

Добавлено через 3 минуты
Ребята, а может чтобы вам не было скучно я вам задачки веселые буду закидывать. У меня их много!!!
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38161 / 21096 / 4306
Регистрация: 12.02.2012
Сообщений: 34,680
Записей в блоге: 14
05.07.2012, 20:47
Цитата Сообщение от diagon Посмотреть сообщение
вариант с проверкой числа на простоту во время компиляции, ничего быстрее этого способа быть не может
- почему же? Чтобы проверить число на простоту нужно выполнить определенный объем вычислительной работы. Какая разница, когда она выполняется? А если нужно проверять простоту неизвестного заранее количества чисел, это можно выполнить at compile time? Не думаю...

Просто - не всегда эффективно. Согласен. Но вопрос ведь не предполагал реализацию самого эффективного алгоритма... А решето Эратосфена - это классика.
0
 Аватар для soon
2554 / 1319 / 178
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
05.07.2012, 21:18
Какая разница, когда она выполняется?
Разница есть, либо каждый раз вычислять, либо просто вывести. Но если теоретически в первом варианте можно получить любое простое число, то во втором для этого потребуется перекомпиляция.
А если нужно проверять простоту неизвестного заранее количества чисел, это можно выполнить at compile time?
Если их количество неизвестно во время компиляции - разумеется, нет. В противном случае существует алгоритм, и ForEveR уже представлял его.
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38161 / 21096 / 4306
Регистрация: 12.02.2012
Сообщений: 34,680
Записей в блоге: 14
05.07.2012, 21:25
Цитата Сообщение от soon Посмотреть сообщение
Если их количество неизвестно во время компиляции - разумеется, нет
- не представляю себе, для чего может понадобиться программа, которая в сущности говорит: "число 13 - простое"...
0
3 / 3 / 0
Регистрация: 23.12.2011
Сообщений: 55
05.07.2012, 21:36  [ТС]
Господа, вот что мне нужно было.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
 
using namespace std;
 
int main()
{
    int i,j;
    bool isprime;
 
    for (i=1;i<100;i++)
    {
        isprime=true;
        for (j=2;j<=i/2;j++)
        if ((i%j)==0)
        isprime=false;
        if (isprime)
        cout <<i <<" is prime.\n";
    }
    return 0;
}
1
 Аватар для PSIAlt
87 / 87 / 1
Регистрация: 19.06.2012
Сообщений: 245
06.07.2012, 08:08
Цитата Сообщение от Catstail Посмотреть сообщение
- не представляю себе, для чего может понадобиться программа, которая в сущности говорит: "число 13 - простое"...
+1. soon просто хотел показать крутость копипаста.
0
Higher
 Аватар для diagon
1953 / 1219 / 120
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
06.07.2012, 12:21
Цитата Сообщение от soon Посмотреть сообщение
Разве? Там ведь один проход.
Я имел в виду поиск чисел с такой проверкой.


Цитата Сообщение от Catstail Посмотреть сообщение
не представляю себе, для чего может понадобиться программа, которая в сущности говорит: "число 13 - простое"...
Ну, например, для реализации хеширования. Суть в том, что для хеширования нужно выбрать простое основание. Чтобы не случалось неприятных ситуаций, можно вставить static_assert, проверяющий, является ли основание простым.
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38161 / 21096 / 4306
Регистрация: 12.02.2012
Сообщений: 34,680
Записей в блоге: 14
06.07.2012, 13:01
т.е. программа будет всегда хэшировать по одному основанию? Не убеждает...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
06.07.2012, 13:01
Помогаю со студенческими работами здесь

Алгоритм нахождения простого числа
Задача:написать алгоритм нахождения простого числа в интервале а,в,где а и в вводятся с клавиатуры.

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

Как проверить условие равенства в операторе условия
Допустим идет условие &quot; если x=3 то что то делается&quot; как это записать? знаки равенства в программировании не действуют, а булево равно...

Как правильно подправить условие в условном операторе?
Program z20; var y,x,a:real; begin writeln('Введите х и а'); readln(x,a); if (sqr(x)&gt;a) and (x&gt;0) then ...

Каково будет условие вывода на экран простого числа( оно делится только на 1 и на себя)
Каково будет условие вывода на экран простого числа( оно делится только на 1 и на себя) Есть вот это(точно не знаю, верна ли она), она НЕ...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru