Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.54/13: Рейтинг темы: голосов - 13, средняя оценка - 4.54
0 / 0 / 0
Регистрация: 15.05.2016
Сообщений: 1
1

Выяснить, будет ли заданное натуральное число простым

15.05.2016, 06:14. Показов 2413. Ответов 20
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
напишите програмку на C++,используя оператор цикла с параметром.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.05.2016, 06:14
Ответы с готовыми решениями:

Определить, является ли заданное натуральное число простым
Определить, является ли заданное натуральное число простым. Циклический алгоритм. Блок схема,...

Определить, является ли заданное натуральное число простым
Определить, является ли заданное натуральное число простым

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

Определить, является ли заданное натуральное число простым
Определить, является ли заданное натуральное число простым. Выходные данные: Вывести YES или NO....

20
30 / 30 / 23
Регистрация: 29.04.2011
Сообщений: 153
15.05.2016, 06:58 2
Одного не пойму зачем цикл если можно использовать условный оператор для этого?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
using namespace std;
 
int summa(int A[10]);
 
int main()
{
    setlocale(LC_ALL, ("Russian"));
    
    int a;
    cout << "Введите число a: ";
    do
    {
        cin >> a;
        cout << "Число a является простым\n";
        break;
    } while (a % 2 >= 1);
    
    system("pause");
    return 0;
}
0
Модератор
Эксперт С++
13507 / 10757 / 6412
Регистрация: 18.12.2011
Сообщений: 28,714
15.05.2016, 10:50 3
Button, посмотрите все ссылки внизу страницы на Вашу тему.

Njkzy,
1. У Вас все числа простые.
2. Какое отношение к задаче имеет строка int summa(int A[10]);?
3. a%2>=1 - это что за условие?
4. break у Вас выполнится при первом проходе цикла. Зачем он тогда нужен?
1
30 / 30 / 23
Регистрация: 29.04.2011
Сообщений: 153
15.05.2016, 11:14 4
zss, ну точно, спать надо больше
Цитата Сообщение от zss Посмотреть сообщение
2. Какое отношение к задаче имеет строка int summa(int A[10]);?
Из другой задачи осталось) Не заметил.

Добавлено через 45 секунд
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
#include <iostream>
using namespace std;
 
int main()
{
    setlocale(LC_ALL, ("Russian"));
    
    int a;
    char b='n';
    while (b=='n')
    {
        cout << "Введите число a: ";
        cin >> a;
        if (a % 2 >= 1)
            cout << "Число a является простым\n";
        else
            cout << "Число a является составным\n";
        cout << "\n\nВыйти из программы? Y/N...\n";
        cin >> b;       
    } 
    
    system("pause");
    return 0;
}
0
Special user
36 / 36 / 16
Регистрация: 07.10.2013
Сообщений: 121
15.05.2016, 11:48 5
Njkzy
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>
using namespace std;
 
int main()
{
    setlocale(LC_ALL, ("Russian"));
    
    int a;
    char b='n';
    while (b=='n')
    {
        cout << "Введите число a: ";
        cin >> a;
        if (a % 2 >= 1)
            cout << "Число a является простым\n";
        else
            cout << "Число a является составным\n";
        cout << "\n\nВыйти из программы? Y/N...\n";
        cin >> b;       
    } 
    system("pause");
    return 0;
}
Результат работы вашей программы:
Число 1 является простым
Число 2 является составным
Число 3 является простым
Число 4 является составным
Число 5 является простым
Число 6 является составным
Число 7 является простым
Число 8 является составным
Число 9 является простым
Число 10 является составным
Число 11 является простым
Число 12 является составным
Число 13 является простым
Число 14 является составным
Число 15 является простым
Число 16 является составным
Число 17 является простым
Число 18 является составным
Число 19 является простым
1
30 / 30 / 23
Регистрация: 29.04.2011
Сообщений: 153
15.05.2016, 12:25 6
ну ладно погуглил и нашел на форуме
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>
using namespace std;
 
int main()
{
    setlocale(LC_ALL, ("Russian"));
    
    int n;  //проверяемое число
    int i;  //счетчик циклов
    int is_prime; //булев флаг
                  //предположим,что число явл.простым,пока не докажем обратное
    is_prime = true;
    //считать число с клавиатуры
    cout << "введем число и нажмем ентер";
    cin >> n;
    //проверка числа,выполняя проверку делимости
    //на все целые числа от 2 до  sqrt(n) (корня из п)
    i = 2;
    while (i <= sqrt(static_cast<double>(n))) {
        //пока значение переменной i<=sqrt(n),
        if (n%i == 0)//если значение переменной i
                     //случайно делится на n,
            is_prime = false;//n не является простым числом.
        i++;  //прибавить 1 к значению переменной i.
    }
    //напечатать результаты
    if (is_prime)
        cout << "число простое\n";
    else
        cout << "число непростое\n";
        
    system("pause");
    return 0;
}
0
Special user
36 / 36 / 16
Регистрация: 07.10.2013
Сообщений: 121
15.05.2016, 13:33 7
Цитата Сообщение от Njkzy Посмотреть сообщение
ну ладно погуглил

Не по теме:

А как же иначе.


Результат работы "вашей" программы:
Кликните здесь для просмотра всего текста
введем число и нажмем ентер:
Число -20 число простое
Число -19 число простое
Число -18 число простое
Число -17 число простое
Число -16 число простое
Число -15 число простое
Число -14 число простое
Число -13 число простое
Число -12 число простое
Число -11 число простое
Число -10 число простое
Число -9 число простое
Число -8 число простое
Число -7 число простое
Число -6 число простое
Число -5 число простое
Число -4 число простое
Число -3 число простое
Число -2 число простое
Число -1 число простое
Число 0 число простое
Число 1 число простое
Число 2 число простое
Число 3 число простое
Число 4 число непростое
Число 5 число непростое
Число 6 число непростое
Число 7 число непростое
Число 8 число непростое
Число 9 число непростое
Число 10 число непростое
Число 11 число непростое
Число 12 число непростое
Число 13 число непростое
Число 14 число непростое
Число 15 число непростое
Число 16 число непростое
Число 17 число непростое
Число 18 число непростое
Число 19 число непростое
Число 20 число непростое
0
Njkzy
15.05.2016, 13:58
  #8

Не по теме:

Цитата Сообщение от SkyBy Посмотреть сообщение
А как же иначе.


Не по теме:

Только умничать и можем. А как на счет того что бы самому написать?

0
Special user
36 / 36 / 16
Регистрация: 07.10.2013
Сообщений: 121
15.05.2016, 14:06 9
Пример:
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 main()
{
    int number;
    bool flag = true;
    std::cout << "Enter number: ";
    std::cin >> number;
    while (true)
    {
        if (number <= 1)
        {
            flag = false;
            break;
        }
        for (int i = 2; i <= sqrt(number); i++)
        {
            if (number % i == 0)
            {
                flag = false;
                break;
            }
        }
        break;
    }
    if (!flag) {
        std::cout << "It isn't prime number.\n";
    }
    else {
        std::cout << "It is prime number.\n";
    }
    return 0;
}
Если будет интересна эта тема, советую почитать некоторые топики, например: Быстрая проверка натурального числа на простоту

Добавлено через 6 минут

Не по теме:

Njkzy, против вас я ничего не имею. Я думаю, вы в состоянии были написать подобную программу самостоятельно. Просто не ясна такая активность с вашей стороны.

0
1 / 1 / 0
Регистрация: 22.09.2022
Сообщений: 45
25.09.2022, 17:46 10
Добрый день! Подскажите пожалуйста. Вот код для поиска простых чисел.
C++
1
2
3
4
5
6
7
8
9
10
int n;
// ввести n c клавиатуры
 
for (i = 2; i <= sqrt(n); i++) {
    if (n % i == 0) {
        // вывести, что n  не простое, так как делится на i
        return 0;
    }
}
//вывести что n простое.
Объясните пожалуйста условие for. Почему тут используется команда sqrt?
0
Модератор
Эксперт С++
13507 / 10757 / 6412
Регистрация: 18.12.2011
Сообщений: 28,714
25.09.2022, 18:01 11
Цитата Сообщение от Radanovich Посмотреть сообщение
Почему тут используется команда sqrt
Числа большее корня из n можно не рассматривать, т.к. на них n делиться не будет.
Кстати, это условие i <= sqrt(n) лучше записать как i*i<=n
0
1 / 1 / 0
Регистрация: 22.09.2022
Сообщений: 45
25.09.2022, 18:13 12
Спасибо большое!
0
1 / 1 / 0
Регистрация: 22.09.2022
Сообщений: 45
26.09.2022, 20:22 13
Доброе утро. Подскажите пожалуйста ошибки в коде. Вроде находит число но цикл не останавливается. Пробовал с i < n, но результат тот же.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
int main()
{
    cout << "Enter number" << endl;
    int n;
    cin >> n;
    for (int i = 2; i * i <= n; i++)
    {
        if (n % i == 0)
        {
            cout << n << " is not prime " << endl;
        }
        else
            cout << n << " is prime " << endl;
    }
}
Добавлено через 3 часа 34 минуты
И что означает условие i * i < n
0
731 / 432 / 207
Регистрация: 19.12.2016
Сообщений: 1,700
26.09.2022, 20:30 14
Цитата Сообщение от Radanovich Посмотреть сообщение
i * i < n
Ответ уже был.
Цитата Сообщение от zss Посмотреть сообщение
Числа большее корня из n можно не рассматривать, т.к. на них n делиться не будет.
Кстати, это условие i <= sqrt(n) лучше записать как i*i<=n
0
1 / 1 / 0
Регистрация: 22.09.2022
Сообщений: 45
26.09.2022, 20:37 15
Простите но я не совсем понимаю. Можете пожалуйста объяснить без употребления корня,
почему i * i < n.
Извините за распоров, я просто пока не совсем понимаю
0
Модератор
Эксперт С++
13507 / 10757 / 6412
Регистрация: 18.12.2011
Сообщений: 28,714
26.09.2022, 21:07 16
Разве не очевидно:
i * i < n
sqrt(i * i) < sqrt(n)
i < sqrt(n)
0
1 / 1 / 0
Регистрация: 22.09.2022
Сообщений: 45
26.09.2022, 21:49 17
Я понимаю что это альтернативная запись. Условие i * i < n нужно лишь для того что бы сократить поиск?

Добавлено через 36 минут
Дошло наконец. Почему такое условие понятно. Помогите теперь разобраться почему программа выводит ответ столько раз, какое n я ввёл, вместо одного ответа? Со стейтментами накосячил или в if нужно копаться?
0
661 / 662 / 106
Регистрация: 29.05.2015
Сообщений: 3,967
27.09.2022, 09:40 18
Потому что у тебя внутри цикла вывод ответа при обоих вариантах.

И в логике ошибка. Алгоритм должен давать ответ "не простое" при нахождении любого делителя, и выходить из цикла - мы ведь ищем не все делители, достаточно одного. А ответ "простое" только если пройден весь цикл и делители не найдены.
0
428 / 240 / 142
Регистрация: 21.02.2011
Сообщений: 4,667
28.09.2022, 11:48 19
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
bool isPrime(int num) {
  if(num==2 || num ==3 || num ==5) 
   return true;
  
  else if(num <=1 || num % 2 ==0 || num % 3 ==0) 
   return false;
  
  else
  {
    for(int i=5; i<=sqrt(num); i+=6 )
     if( (num % i==0) || (num % (i+2) == 0)) return false;
    
    return true;
  
  }
}
0
Модератор
Эксперт функциональных языков программированияЭксперт Python
36601 / 20330 / 4220
Регистрация: 12.02.2012
Сообщений: 33,644
Записей в блоге: 13
28.09.2022, 12:36 20
andreyfreelans, плохой код.
0
28.09.2022, 12:36
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.09.2022, 12:36
Помогаю со студенческими работами здесь

Рекурсия: определить, является ли заданное натуральное число простым
Написать функцию определения, является ли заданное натуральное число простым. (рекурсивно)

Написать рекурсивную функцию, определяющую, является ли заданное натуральное число простым
Помогите сделать это задание.... Написать рекурсивную функцию, определяющую, является ли заданное...

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

Составить программу, проверяющую, будет ли простым данное натуральное число
помогите с задачей, пожалуйста! Задача: Составить программу, проверяющую, будет ли простым данное...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru