Аватар для Liori
4 / 4 / 5
Регистрация: 30.08.2012
Сообщений: 155
1

Простое или составное число

12.01.2015, 17:04. Показов 8387. Ответов 8
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Не могу понять, почему мой код не работает
Если ввожу, например, 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
28
29
30
31
32
#include <iostream>
#include <cmath>
using namespace std;
bool IsPrime(double n);
 
int main(int argc, char* argv[])
{
    double n;
    cin >> n;
    if (n > 0 && n!=1)
    {
        if (IsPrime(n)) cout << "prime\n";
        else if (!(IsPrime(n))) cout << "composite\n";
    }
    system("pause");
    return 0;
}
 
bool IsPrime(double n) 
{
    
    int k=0;
    double n2 = sqrt(n);
    int n3 = n2;
    
    for (int i=2; i<=n3;i++)
    {
        if ((n3%i)==0) k++;
    }
    if (k) return false;
    else return true;
}
0
12.01.2015, 17:04
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
12.01.2015, 17:04
Ответы с готовыми решениями:

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

Необходимо вывести строку prime, если число простое, или composite, если число составное
Уважаемые программисты, проверьте, пожалуйста, решение задачи Проверьте, является ли число простым. Вводится одно число n. Формат...

Дано простое число. Составить функцию, которая будет находить следующее за ним простое число
Дано простое число. Составить функцию, которая будет находить следующее за ним простое число

8
Котовчанин
942 / 482 / 200
Регистрация: 16.02.2010
Сообщений: 3,338
Записей в блоге: 35
12.01.2015, 17:08 2
Цитата Сообщение от Liori Посмотреть сообщение
int n3 = n2;
А это зачем?
Цитата Сообщение от Liori Посмотреть сообщение
for (int i=2; i<=n3;i++)
В последней итерации число будет делиться само на себя, что даст лишний прирост k. В этом и дело.
0
Модератор
Эксперт С++
 Аватар для zss
13730 / 10926 / 6482
Регистрация: 18.12.2011
Сообщений: 29,161
12.01.2015, 17:49 3
Цитата Сообщение от Тамика Посмотреть сообщение
А это зачем?
Это такое неявное приведение double к int
0
Котовчанин
942 / 482 / 200
Регистрация: 16.02.2010
Сообщений: 3,338
Записей в блоге: 35
12.01.2015, 17:52 4
zss, н-да, не учла.)
0
Модератор
Эксперт С++
 Аватар для zss
13730 / 10926 / 6482
Регистрация: 18.12.2011
Сообщений: 29,161
12.01.2015, 17:53 5
Liori, Посмотрите ссылки внизу страницы, например
Определить, простое число или нет
0
Эксперт PHP
 Аватар для Kerry_Jr
3106 / 2591 / 1219
Регистрация: 14.05.2014
Сообщений: 7,236
Записей в блоге: 1
12.01.2015, 18:00 6
Цитата Сообщение от Liori Посмотреть сообщение
C++
1
bool IsPrime(double n);
число double не может быть простым
Цитата Сообщение от Liori Посмотреть сообщение
C++
1
2
3
4
for (int i=2; i<=n3;i++)
    {
        if ((n3%i)==0) k++;
    }
здесь будут лишние итерации, можно эту функцию написать проще
C++
1
2
3
4
5
6
7
8
bool IsPrime(int n)
{
    if (n == 2) return true;
    if (n < 2 || n % 2 == 0) return false;
    for (int i = 3; i*i <= n; i += 2)
        if (n % i == 0) return false;
    return true;
}
1
 Аватар для Liori
4 / 4 / 5
Регистрация: 30.08.2012
Сообщений: 155
12.01.2015, 18:16  [ТС] 7
Тамика, если я не присваиваю переменной n3 значение n2, возникает ошибка error C2296: %: недопустимо, левый операнд имеет тип "double"
Поменяла <= на <, но программа все равно не все тесты проходит
0
 Аватар для SuurKissat
34 / 34 / 16
Регистрация: 11.01.2015
Сообщений: 130
12.01.2015, 18:45 8
1. Напишите, какой именно код не все тесты проходит и на каком именно числе он дает ошибку.
2. Может я чего-то не понимаю, но функция в первом сообщении написана Странно
C++
1
if ((n3%i)==0)
Здесь Вы проверяете, является ли простым или составным n3, то есть корень из n, а не само n!
0
Котовчанин
942 / 482 / 200
Регистрация: 16.02.2010
Сообщений: 3,338
Записей в блоге: 35
13.01.2015, 09:28 9
Цитата Сообщение от Liori Посмотреть сообщение
Тамика, если я не присваиваю переменной n3 значение n2, возникает ошибка error C2296: %: недопустимо, левый операнд имеет тип "double"
А почему бы не сделать так?
C++
1
int n2 = sqrt(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
29
30
31
32
33
34
#include <iostream>
#include <cmath>
using namespace std;
bool IsPrime(int n);
 
int main(int argc, char* argv[])
{
    while(true)
    {
    int n;
    cin >> n;
    if (n > 0 && n!=1)
    {
        if (IsPrime(n)) cout << "prime\n";
        else if (!(IsPrime(n))) cout << "composite\n";
    }
    }
    system("pause>>null");
    return 0;
}
 
bool IsPrime(int n) 
{
    int k=0;
    int n2 = sqrt(n);
 
    for (int i = 2; i <= n2; i++)
    {
        if ((n % i) == 0) k++;
    }
 
    if (k) return false;
    else return true;
}
0
13.01.2015, 09:28
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
13.01.2015, 09:28
Помогаю со студенческими работами здесь

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

Дано простое число. Составить функцию, которая будет находить следующее за ним простое число
Дано простое число. Составить функцию, которая будет находить следующее за ним простое число.

Дано простое число. Составить функцию,которая будет находить следующее за ним простое число.
дано простое число.составить функцию,которая будет находить следующее за ним простое число.

Простое число или нет
#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; ...

Передать в функцию целое число. Функция заменяет его на ближайшее простое число, которое больше или меньше исходного. Вернуться в main( ) и распечатат
Передать в функцию целое число. Функция заменяет его на ближайшее простое число, которое больше или меньше исходного. Вернуться в main( ) и...


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

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

Редактор формул (кликните на картинку в правом углу, чтобы закрыть)
Опции темы

Новые блоги и статьи
Система безопасности в Laravel: возможности и примеры
Wired 18.02.2025
Каждый день появляются новые виды атак и уязвимостей, которые могут поставить под угрозу конфиденциальные данные пользователей и функционирование всей системы. В этом контексте выбор надежного. . .
Давайте сравним Django и Laravel
Wired 18.02.2025
Django и Laravel - два мощных инструмента, которые часто сравнивают между собой. Оба фреймворка предлагают разработчикам богатый набор возможностей для создания масштабируемых веб-приложений, но. . .
Laravel или React - что лучше?
Wired 18.02.2025
В разработке веб выбор правильного инструмента часто определяет успех всего проекта. Особенно интересным представляется сравнение Laravel и React - двух популярных технологий, которые часто. . .
Laravel 11: новые возможности, гайд по обновлению
Wired 18.02.2025
Laravel 11 - это новая масштабная версия одного из самых популярных PHP-фреймворков, выпущенная в марте 2024 года. Эта версия продолжает традицию внедрения передовых технологий и методологий. . .
Миграции в Laravel
Wired 18.02.2025
Разработка веб-приложений на Laravel неразрывно связана с управлением структурой базы данных. При работе над проектом часто возникает необходимость вносить изменения в схему базы данных - добавлять. . .
Аутентификация в Laravel
Wired 18.02.2025
В современном мире веб-разработки безопасность пользовательских данных становится критически важным аспектом любого приложения. Laravel, как один из самых популярных PHP-фреймворков, предоставляет. . .
Laravel или Symfony: что лучше для старта?
Wired 18.02.2025
В веб-разработке выбор правильного фреймворка может стать определяющим фактором успеха проекта. Особенно это актуально для PHP - одного из самых распространенных языков программирования, где Laravel. . .
Что нового в Laravel 12
Wired 18.02.2025
С момента своего появления в 2011 году Laravel постоянно развивается, внедряя инновационные решения и совершенствуя существующие возможности. В начале 2025 года ожидается выход Laravel 12 - новой. . .
Роутер в Laravel: как работать с маршрутами
Wired 18.02.2025
Маршрутизация - один из основополагающих элементов любого веб-приложения на Laravel, определяющий как приложение отвечает на HTTP-запросы к различным URL-адресам. По сути, роутинг - это механизм. . .
Интеграция шаблона Bootstrap в Laravel PHP
Wired 18.02.2025
Разработка веб-приложений в современном мире требует не только надежного бэкенда, но и привлекательного, отзывчивого интерфейса. Laravel, как один из самых популярных PHP-фреймворков, отлично. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru