Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.70/92: Рейтинг темы: голосов - 92, средняя оценка - 4.70
1 / 1 / 2
Регистрация: 11.02.2014
Сообщений: 97

Определить, простое число или нет

10.08.2014, 23:04. Показов 19433. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Программа должна говорить простое число или нет. Подскажите в чем ошибка кто знает.
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 <cstdlib>
#include <iostream>
#include <math.h>
using namespace std;
 
int main()
{
    int n;
    
    cin >> n;
    for (int i=2;i<sqrt(n);i++)
   {
    if (n%i==0)
    {
    cout << "Chislo " <<n<< " ne prostoe" <<endl;  
system("PAUSE");
return 0;
 
} 
} 
 cout << "Chislo " <<n<< " prostoe" <<endl; 
    
 
    
    system("PAUSE");
    return EXIT_SUCCESS;
}
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
10.08.2014, 23:04
Ответы с готовыми решениями:

Вводится целое число определить простое оно или нет
Помогите решить задачу. Вводится целое число определить простое оно или нет.

Простое число или нет
#include &lt;iostream&gt; #include&quot;conio.h&quot; #include&quot;math.h&quot; using namespace std; int main() { int n,i,k; bool np; ...

Функции. Проверить, простое число или нет. Увеличить его значение на натуральное число M. Проверить, осталось ли оно простым
Помогите пожалуйста 1. Дано натуральное число N, проверить, простое оно или нет. Увеличить его значение на натуральное число M....

10
 Аватар для porshe
57 / 51 / 42
Регистрация: 18.07.2014
Сообщений: 194
10.08.2014, 23:12
Цитата Сообщение от Козак Алексей Посмотреть сообщение
чем ошибка
А что за ошибка?
0
Эксперт PHP
4925 / 3920 / 1620
Регистрация: 24.04.2014
Сообщений: 11,441
10.08.2014, 23:12
все работает: http://ideone.com/WRGkj3
только нужно проверять что i меньше либо равно корень из n
1
1 / 1 / 2
Регистрация: 11.02.2014
Сообщений: 97
10.08.2014, 23:16  [ТС]
ошибка в том, что выдаёт не верные ответы (9 - простое например)
0
Эксперт PHP
4925 / 3920 / 1620
Регистрация: 24.04.2014
Сообщений: 11,441
10.08.2014, 23:16
Козак Алексей,
Цитата Сообщение от Jewbacabra Посмотреть сообщение
только нужно проверять что i меньше либо равно корень из n
1
1 / 1 / 2
Регистрация: 11.02.2014
Сообщений: 97
10.08.2014, 23:17  [ТС]
спасибо
0
40 / 40 / 17
Регистрация: 04.02.2014
Сообщений: 144
10.08.2014, 23:32
Цитата Сообщение от Козак Алексей Посмотреть сообщение
ошибка в том, что выдаёт не верные ответы (9 - простое например)
А с чего же это 9 - простое число? Простые числа делятся только на единицу и на самих себя. А у 9 есть еще делитель 3.
P.S. Блин, туплю. Это ж Вы ошибку указали
0
Модератор
Эксперт по электронике
8979 / 6745 / 921
Регистрация: 14.02.2011
Сообщений: 23,863
10.08.2014, 23:59
Цитата Сообщение от Козак Алексей Посмотреть сообщение
for (int i=2;i<sqrt(n);i++)
C++
1
for (int i=2;i<=sqrt(n);i++)
можно убыстрить
самое простейшее так
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
int tmp==sqrt(n);// чтобы не считать на каждой итерации корень
 
if(n<2)// 0 и 1 не являются простыми числами 
{
cout << "Chislo " <<n<< " ne prostoe" <<endl; 
system("PAUSE");
return 0;
}
if(n==2)// 2 простое число
{
cout << "Chislo " <<n<< "prostoe" <<endl; 
system("PAUSE");
return 0;
}
if(n%2==0)//  если четное то явно не простое 
{
cout << "Chislo " <<n<< " ne prostoe" <<endl; 
system("PAUSE");
return 0;
}
 
for (int i=3;i<=tmp;i+=2)// начинаем с 3 и перебираем все нечетные числа, уменьшаем количество итераций 
 {
 if (n%i==0)
    {
    cout << "Chislo " <<n<< " ne prostoe" <<endl;  
   system("PAUSE");
   return 0;
   } 
} 
 cout << "Chislo " <<n<< " prostoe" <<endl;
0
431 / 385 / 200
Регистрация: 12.08.2011
Сообщений: 1,610
11.08.2014, 10:55
Так работать с корнем нельзя. Это просто невообразимо плохо. Можно сделать как-то так, например:

C
1
2
3
4
5
6
7
8
9
10
int is_prime(const unsigned int x)
{
    if( x < 4 ) { return 1; }
    unsigned int d = 1;
    do {
        ++d;
        if( x % d == 0 ) { return 0; }
    } while( d * d < x );
    return 1;
}
0
Эксперт по математике/физикеЭксперт С++
 Аватар для Ilot
2223 / 1425 / 420
Регистрация: 16.05.2013
Сообщений: 3,642
Записей в блоге: 6
11.08.2014, 11:48
Цитата Сообщение от Vtulhu Посмотреть сообщение
Так работать с корнем нельзя. Это просто невообразимо плохо. Можно сделать как-то так, например:
Не понятно кому оставлен комментарий, однако по сравнению с предыдущим оратором код не имеет сколь-нибудь значимых приемуществ из-за умножения d * d на каждом цикле. Это первое. Второе не отброшены четные числа в проверке, как в предыдущем примере. Итого крайне не эффективный код.
0
Модератор
Эксперт по электронике
8979 / 6745 / 921
Регистрация: 14.02.2011
Сообщений: 23,863
11.08.2014, 12:01
Цитата Сообщение от Vtulhu Посмотреть сообщение
Так работать с корнем нельзя. Это просто невообразимо плохо.
это почему еще???
боишься что вместо корень из 9 будет не 3 а 2.9999 и при приведении будет 2?
добавь 1
C++
1
int tmp==sqrt(n)+1;
Цитата Сообщение от Vtulhu Посмотреть сообщение
if( x < 4 ) { return 1; }
числа 0 и 1 не являются простыми
ну а насчет
Цитата Сообщение от Vtulhu Посмотреть сообщение
d * d
Ilot, уже сказал
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
11.08.2014, 12:01
Помогаю со студенческими работами здесь

определить число простое или составное нужно блок схему и код на с++
дано число n &gt; 1 если n является простым числом то вывести сообщение n простое чилсо если иначе то n составное использовать операцию...

Определить зеркально число или нет
1-Ввести 4-х значное число допустим 1991 определить зеркально или нет ( 1+9=10,9+1=10 в суме должно давать,а если 1992 1+9=10,9+2=11 то не...

Определить целое число или нет
Необходимо определить, является ли число целым или нет. В цикле значение переменной изменяется с шагом 0.0001 И, допустим, если...

Определить, четное число или нет
Добрый вечер нужно написать прорамму для определения четных и не четных чисел. Я так понимаю что четное при деление должно быть кратно 2...

Как определить целое число или нет
Можно как то определить какое число записано в переменной? скажем есть переменная double X; можно как то программно определить...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru