Форум программистов, компьютерный форум CyberForum.ru

Описать функцию, возвращающую true, если натуральное число является простым, и false в противном случае - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.91
НаташаМеркулова
 Аватар для НаташаМеркулова
0 / 0 / 0
Регистрация: 14.06.2013
Сообщений: 5
14.06.2013, 12:51     Описать функцию, возвращающую true, если натуральное число является простым, и false в противном случае #1
Надо написать программу на c++
Описать функцию, возвращающую true, если натуральное число является простым, и false в противном случае. С её помощью найти количество простых чисел среди 10 целых положительных чисел
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.06.2013, 12:51     Описать функцию, возвращающую true, если натуральное число является простым, и false в противном случае
Посмотрите здесь:

C++ Создать функцию Chet(k) логического типа,возвращающую True , если целый параметр К является чётным и False в противном случае
C++ Составить линейную программу, печатающую значение true, если указанное высказывание является истинным, и false - в противном случае.
Составить линейную программу, печатающую значение true, если указанное высказывание является истинным, и false - в противном случае. C++
Описать функцию IsPrime(N) логического типа, возвращающую True, если целый параметр N (> 1) является простым числом C++
Разработать функцию, которая возвращает True, если полученные значения могут быть сторонами треугольника, False – в противном случае C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
VEINHORN
542 / 91 / 22
Регистрация: 16.12.2011
Сообщений: 317
14.06.2013, 16:43     Описать функцию, возвращающую true, если натуральное число является простым, и false в противном случае #2
В for измените кол-во чисел для проверки под свои нужды.)

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include<iostream>
#include<math.h>
using namespace std;
 
bool isSimpleNumber(int number) {
    bool flag = true;
    for(int i = 2;i <= (int)sqrt((double)number);i++)
        if(number % i == 0) {
            flag = false;
            break;
        }
    return flag;
}
 
int main() 
{   
    for(int i = 0;i < 100;i++)
        if(isSimpleNumber(i))
            std::cout << i << " ";
    system("pause");
    return 0;
}
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4922 / 2665 / 243
Регистрация: 29.11.2010
Сообщений: 7,420
14.06.2013, 16:57     Описать функцию, возвращающую true, если натуральное число является простым, и false в противном случае #3
C++
1
2
3
4
5
6
7
bool isPrime (int n)
{
    for (int i = 2; i < sqrt(n); i++)
        if (n % i == 0)
            return false; // число делится, сл. непростое
    return true;
}
MCKLAS, простое число - prime. И незачем цикл break прерывать чтоб потом вернуть это же значение. Сразу возвращать надо.
Thinker
Эксперт C++
 Аватар для Thinker
4215 / 2189 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
14.06.2013, 17:04     Описать функцию, возвращающую true, если натуральное число является простым, и false в противном случае #4
MrGluck, как насчет числа 2?
VEINHORN
542 / 91 / 22
Регистрация: 16.12.2011
Сообщений: 317
14.06.2013, 17:04     Описать функцию, возвращающую true, если натуральное число является простым, и false в противном случае #5
MrGluck, писалось на скорую руку..
Thinker
Эксперт C++
 Аватар для Thinker
4215 / 2189 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
14.06.2013, 17:05     Описать функцию, возвращающую true, если натуральное число является простым, и false в противном случае #6
Цитата Сообщение от MCKLAS Посмотреть сообщение
писалось на скорую руку..

Не по теме:

а зачем писать на скорую руку, вас же никто не торопит, гораздо интереснее писать красивые алгоритмы

VEINHORN
542 / 91 / 22
Регистрация: 16.12.2011
Сообщений: 317
14.06.2013, 17:07     Описать функцию, возвращающую true, если натуральное число является простым, и false в противном случае #7
Thinker, если вам время позволяет сидеть и всем писать красивые алгоритмы, то это очень хорошо.)
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4922 / 2665 / 243
Регистрация: 29.11.2010
Сообщений: 7,420
14.06.2013, 17:08     Описать функцию, возвращающую true, если натуральное число является простым, и false в противном случае #8
Цитата Сообщение от Thinker Посмотреть сообщение
MrGluck, как насчет числа 2?
так а что с ним не так?
2 - простое
вернет true не заходя в цикл
Thinker
Эксперт C++
 Аватар для Thinker
4215 / 2189 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
14.06.2013, 17:09     Описать функцию, возвращающую true, если натуральное число является простым, и false в противном случае #9
Цитата Сообщение от MCKLAS Посмотреть сообщение
Thinker, если вам время позволяет сидеть и всем писать красивые алгоритмы, то это очень хорошо.)

Не по теме:

времени нет писать всем алгоритмы, здесь же не благодельня, но если уж что-то писать, то с умом))

MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4922 / 2665 / 243
Регистрация: 29.11.2010
Сообщений: 7,420
14.06.2013, 17:09     Описать функцию, возвращающую true, если натуральное число является простым, и false в противном случае #10
MCKLAS, ничего, что по вашему коду человек учиться будет?
Thinker
Эксперт C++
 Аватар для Thinker
4215 / 2189 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
14.06.2013, 17:09     Описать функцию, возвращающую true, если натуральное число является простым, и false в противном случае #11
Цитата Сообщение от MrGluck Посмотреть сообщение
так а что с ним не так?
2 - простое
вернет true не заходя в цикл
уверены? судя по коду, не вернет
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4922 / 2665 / 243
Регистрация: 29.11.2010
Сообщений: 7,420
14.06.2013, 17:11     Описать функцию, возвращающую true, если натуральное число является простым, и false в противном случае #12
кстати,
Цитата Сообщение от MrGluck Посмотреть сообщение
for (int i = 2; i < sqrt(n); i++)
<= sqrt(n) должно быть

Добавлено через 1 минуту
Thinker, почему это?
2 <= sqrt(2)
равнозначно
2 <= 1.41...
выходим из цикла
return true;
можете проверить, если не верится так
Thinker
Эксперт C++
 Аватар для Thinker
4215 / 2189 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
14.06.2013, 17:12     Описать функцию, возвращающую true, если натуральное число является простым, и false в противном случае #13
да, у вас корень, извиняюсь, не увидел. тогда лучше корень за цикл вынести и убрать из рассмотрения все четные числа, кроме 2
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4922 / 2665 / 243
Регистрация: 29.11.2010
Сообщений: 7,420
14.06.2013, 17:13     Описать функцию, возвращающую true, если натуральное число является простым, и false в противном случае #14
И заклепку еще на 1 добавить
C++
1
2
3
4
5
6
7
bool isPrime (int n)
{
    for (int i = 2; i <= sqrt(n); i++)
        if (n % i == 0)
            return false; // число делится, сл. непростое
    return n > 1;
}
VEINHORN
542 / 91 / 22
Регистрация: 16.12.2011
Сообщений: 317
14.06.2013, 17:14     Описать функцию, возвращающую true, если натуральное число является простым, и false в противном случае #15
MrGluck, если человек будет учиться он может подправить и улучшить код.)
Прочитав это
return (n & 1 && n > 1) || n == 2;
вопроситель сразу все поймет.)
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4922 / 2665 / 243
Регистрация: 29.11.2010
Сообщений: 7,420
14.06.2013, 17:16     Описать функцию, возвращающую true, если натуральное число является простым, и false в противном случае #16
Thinker, такой вариант что ли?
C++
1
2
3
4
5
6
7
bool isPrime (int n)
{
    for (int i = 3; i <= sqrt(n); i += 2)
        if (n % i == 0)
            return false; // число делится, сл. непростое
    return (n & 1 && n > 1) || n == 2;
}
Thinker
Эксперт C++
 Аватар для Thinker
4215 / 2189 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
14.06.2013, 17:17     Описать функцию, возвращающую true, если натуральное число является простым, и false в противном случае #17
предлагаю так:
Быстрая проверка натурального числа на простоту
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4922 / 2665 / 243
Регистрация: 29.11.2010
Сообщений: 7,420
14.06.2013, 17:19     Описать функцию, возвращающую true, если натуральное число является простым, и false в противном случае #18
MCKLAS, многие люди учатся на конкретных примерах, им надо сначала пощупать, а потом уже легче будет понять.

Добавлено через 1 минуту
Thinker, ну оно также как у меня, лишь по другому записано. Только вот return до цикла пооптимизированнее будет
Thinker
Эксперт C++
 Аватар для Thinker
4215 / 2189 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
14.06.2013, 17:20     Описать функцию, возвращающую true, если натуральное число является простым, и false в противном случае #19
я имел ввиду 3-й алгоритм, он оптимальнее
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.06.2013, 17:26     Описать функцию, возвращающую true, если натуральное число является простым, и false в противном случае
Еще ссылки по теме:

C++ Составить линейную программу,печатающую значение true , если указанное высказывание является истинным,и false в противном случае
C++ Если число является простым, то функция возвращает true, если не является false
C++ Программа, печатающая значение true, если указанное высказывание является истинным, и false в противном случае

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

Или воспользуйтесь поиском по форуму:
Dani
1263 / 621 / 50
Регистрация: 11.08.2011
Сообщений: 2,236
Записей в блоге: 2
Завершенные тесты: 1
14.06.2013, 17:26     Описать функцию, возвращающую true, если натуральное число является простым, и false в противном случае #20
Thinker, мне кажется, что ТС не нужен сверх-скоростной алго) Тут любой правильный сойдет, если бы нужна была скорость, то об этом нужно обязательно упомянуть.
Yandex
Объявления
14.06.2013, 17:26     Описать функцию, возвращающую true, если натуральное число является простым, и false в противном случае
Ответ Создать тему
Опции темы

Текущее время: 20:41. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru