Программа определяющая является ли число простым

Найди верный ответ на вопрос ✅ «Определите, является ли число N простым. (паскаль) . » по предмету Информатика, а если ответа нет или никто не дал верного ответа, то воспользуйся поиском и попробуй найти ответ среди похожих вопросов.

Новые вопросы по информатике

Сколько всего различных символов может быть в восьмибитной текстовой кодировке? 1) 8 2) 512 3) 256 4) 65536

Паскаль. Написать программу подсчета количества отрицательных чисел среди любых 10 вводимых. 1 программа с использованием while, 2 программа — repeat

Сколько кб информации содержит сообщение объемом 2^20 бит?

Информатика пользователь создад сообщение из 256 символов в кодировке Unicode в которой каждый символ кодируется 16 битами после редактирования информационный объем сообщения составил 3072 бит Определите сколько символов удалили сообщение если его

Источник: urokam.net

Является ли число простым — Проверяем на языке Си

Программирование на C, C# и Java

Уроки программирования, алгоритмы, статьи, исходники, примеры программ и полезные советы

Является ли число простым — Проверяем на языке Си

Напишем на языке Си программу, проверяющую является ли число простым. Для проверки будем использовать простейший алгоритм, основанный непосредственно на определении простого числа.

Простое число — определение

Простое число — это натуральное число (то есть целое и положительное), большее, чем единица, которое делится без остатка только на единицу и само на себя.

Список простых чисел (приведем до ста) начинается так: 2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97…

Функция на Си, проверяющая — является ли число простым

Напишем на языке Си функцию, которая будет проверять — простое ли число. И возвращать результат проверки в виде логической величины bool: true (да) или false (нет).

// функция проверяет — простое ли число n
bool isPrime ( int n )
// в цикле перебираем числа от 2 до n — 1
for ( int i = 2 ; i < n ; i ++ )
if ( n % i == 0 ) // если n делится без остатка на i — возвращаем false (число не простое)
return false ;
// если программа дошла до данного оператора, то возвращаем true (число простое) — проверка пройдена
return true ;
else // иначе возвращаем false (число не простое)
return false ;

Читайте также:
Программа судейская на кхл когда выйдет

Алгоритм проверки числа n на простоту строится на определении термина простого числа.

Во-первых число n должно быть больше 1 (проверяем это в строке 5 с помощью условного оператора if), а во-вторых проверяемое число должно иметь только два делителя: 1 и n (проверяем это в строках 8-10 с помощью цикла for и оператора if).

Для работы данного метода требуется подключить заголовочный файл stdbool.h в начале файла с исходным кодом. В stdbool.h содержится определение логических констант true и false, поскольку в чистой версии языка Си они отсутствуют.

Для подключения используем директиву include:

Простое число? Уроки программирования на С++ для начинающих.

Источник: vscode.ru

Является ли число простым

Хочу написать прогу на C++. Она сначала просит ввести число (простое оно или нет, прога проверяет), потом выводит результат на консоль. Объясните, пожалуйста, как сделать или хоть намекните (среда dev-c++ 4.9.9.2), очень прошу.

Отслеживать
80.1k 9 9 золотых знаков 77 77 серебряных знаков 133 133 бронзовых знака
задан 16 ноя 2011 в 12:40
инклюде димо инклюде димо
45 1 1 золотой знак 1 1 серебряный знак 4 4 бронзовых знака

8 ответов 8

Сортировка: Сброс на вариант по умолчанию

Написать что-то в виде

int n; // ввести n c клавиатуры for (i = 2; i > //вывести что n простое. return 0;

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

Отслеживать
25.6k 3 3 золотых знака 15 15 серебряных знаков 46 46 бронзовых знаков
ответ дан 16 ноя 2011 в 13:01
112k 6 6 золотых знаков 92 92 серебряных знака 159 159 бронзовых знаков
должно быть i<=sqrt(n), иначе квадрат простого числа тоже будет простым.
16 ноя 2011 в 14:14

Тогда, наверное, даже лучше набросить сверху единицу, то есть i
16 ноя 2011 в 14:36
Поправь ответ? И ещё нехорошо на каждой итерации квадратный корень считать.
17 окт 2017 в 15:45

А можно проверять делимость по простым числам. А найти их в не очень большом количестве особого труда не составит. =)

Решето Эратосфена (до корня из n). За 1 секунду находит числа до 10^7 примерно.

Читайте также:
Программа для ускорения звука

А дальше перебор делимости (Либо если число уже найдено Эратосфеном, то и перебирать не придётся) на простые числа, если число больше чем 10^7 также до корня из n.

И всё довольно просто и быстро =)

Отслеживать
ответ дан 21 ноя 2011 в 13:03
147 13 13 бронзовых знаков

Довольна старая тема, но всё же добавлю. Есть одна особенность простых чисел — при возведении числа в квадрат, деление этого числа в квадрате на 24 будет давать остаток 1 ( c 2 и 3 не работает, т.к они слишком маленькие , но с остальными числами работает отлично и не тратит много ресурсов для проверки)

int isprime(int num) < if ((num * num) % 24 == 1) < return true; >return false; >
Отслеживать
3,125 6 6 золотых знаков 16 16 серебряных знаков 33 33 бронзовых знака
ответ дан 16 июл 2019 в 10:23
user344423 user344423

И не только простых, но и составных, что делает данный алгоритм непригодным для определения простых чисел

16 июл 2019 в 11:00
Это не работает с составными числами, только с простыми.youtube.com/watch?v=ZMkIiFs35HQ
– user344423
16 июл 2019 в 21:01

25, 35, 49, 55, 65, 77, 85, 91, 95 и ещё бесконечное количество чисел, которая ваша функция определяет как простые

16 июл 2019 в 21:22

Плюс к тому, кроме 2 и 3, с простого числа 46349 и последующие простые числа определяет как составные

16 июл 2019 в 21:43

В плане эффективности могут намекнуть, например, на тест Рабина-Миллера, но судя по всему, Вам будет проще реализовать проверку тривиальным делением

Отслеживать
ответ дан 16 ноя 2011 в 12:52
3,978 11 11 серебряных знаков 7 7 бронзовых знаков

bool prime(ll n) < for (ll i = 2; i return true; >
Отслеживать
19.1k 6 6 золотых знаков 30 30 серебряных знаков 44 44 бронзовых знака
ответ дан 16 июн 2015 в 17:19
Елдан Абдрашим Елдан Абдрашим
И правильно минуснули. Зачем в цикле проверять делимость на четные?

16 июн 2015 в 19:03
#include #include using namespace std; int main()< int n, i; bool isPrime = true; cout>n; cout > if(isPrime) cout

Это готовый код

Отслеживать
5,187 4 4 золотых знака 27 27 серебряных знаков 50 50 бронзовых знаков
ответ дан 17 окт 2017 в 15:40
Bogdan Pahomov Bogdan Pahomov
46 7 7 бронзовых знаков

Читайте также:
Какие вопросы возникают при формулировании программы фирмы

В первом ответе допущена неточность. Я бы написал так

bool prostoNumer(int n)

PS: дело в том что пропускает 4. Потому что цикл не работает sqrt(4) == 2, 2 < 2 и поэтому цикл завершает работу с ложным результатом. нужно поправить 2
Отслеживать
845 6 6 серебряных знаков 12 12 бронзовых знаков
ответ дан 3 апр 2017 в 10:34
1 1 1 бронзовый знак
Это есть в комментариях под принятым ответом

3 апр 2017 в 10:39

Обратите внимание на класс Prime . Простое число — число, имеющее два делителя. Это единица и само это число. Следовательно единица простым числом являться не может, так как она имеет один делитель, значит ее нужно исключить.

Для этого воспользуемся условным оператором if . После этого начнем искать делители этого числа (будем перебирать все числа, которые меньше указанного числа), напомню делителем называется число, которое делится на данный делитель без остатка, то есть остаток равен 0. Когда нашли такое число, ставим на него булевое значение false, как пометка о том, что данное число является составным. После выполнения управляющей конструкции for остаются некоторые числа, которые не помечены false, то есть не имеют делителя(отличного от себя и 1), помечаем их как true.

namespace one < class Program < static void Main(string[] args) < Prime prime = new Prime(); int AmountOfNumbers = 10; for (int i = 2; i < AmountOfNumbers; i++) < if (prime.IsPrime(i)) < Console.WriteLine(i + » простое число.»); >else < Console.WriteLine(i + » составное число.»); >> > > class Prime < public bool IsPrime(int x) < if (x >1) < for (int i = 2; i < x; i++) < if ((x % i) == 0) < return false; >> return true; > else < return false; >> > >
Отслеживать
ответ дан 24 фев 2022 в 8:15
EkaterinaR. EkaterinaR.
59 6 6 бронзовых знаков

Код рабочий, но слишком неоптимальный, даже по сравнению с предыдущими ответами
24 фев 2022 в 9:01

Highly active question. Earn 10 reputation (not counting the association bonus) in order to answer this question. The reputation requirement helps protect this question from spam and non-answer activity.

Источник: ru.stackoverflow.com

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru