Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 5.00/21: Рейтинг темы: голосов - 21, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 14.06.2013
Сообщений: 5
1

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

14.06.2013, 12:51. Просмотров 4349. Ответов 21
Метки нет (Все метки)

Надо написать программу на c++
Описать функцию, возвращающую true, если натуральное число является простым, и false в противном случае. С её помощью найти количество простых чисел среди 10 целых положительных чисел
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
14.06.2013, 12:51
Ответы с готовыми решениями:

Создать функцию Chet(k) логического типа,возвращающую True , если целый параметр К является чётным и False в противном случае
Создать функцию Chet(k) логического типа,возвращающую True , если целый параметр К является чётным...

Как описать функцию Even(K) логического типа, возвращающую TRUE, если целый параметр K является четным, и FALSE в противном случае
Помогите пожалуйста решить задачу, очень срочно надо. Proc24. Описать функцию Even(K) логического...

Написать функцию которая возвращает значение true, если целое число n является чётным в противном случае false
Ребят напишите функцию в паскале...

Функция возвращает true, если число n - натуральное степень числа 2 и false в противном случае
Функция возвращает true, если число n - натуральное степень числа 2 и false в противном случае

21
544 / 93 / 49
Регистрация: 16.12.2011
Сообщений: 317
14.06.2013, 16:43 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;
}
0
Форумчанин
Эксперт CЭксперт С++
8160 / 5008 / 1436
Регистрация: 29.11.2010
Сообщений: 13,458
14.06.2013, 16:57 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 прерывать чтоб потом вернуть это же значение. Сразу возвращать надо.
0
Эксперт С++
4254 / 2228 / 203
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
14.06.2013, 17:04 4
MrGluck, как насчет числа 2?
0
544 / 93 / 49
Регистрация: 16.12.2011
Сообщений: 317
14.06.2013, 17:04 5
MrGluck, писалось на скорую руку..
0
Эксперт С++
4254 / 2228 / 203
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
14.06.2013, 17:05 6
Цитата Сообщение от MCKLAS Посмотреть сообщение
писалось на скорую руку..

Не по теме:

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

0
544 / 93 / 49
Регистрация: 16.12.2011
Сообщений: 317
14.06.2013, 17:07 7
Thinker, если вам время позволяет сидеть и всем писать красивые алгоритмы, то это очень хорошо.)
0
Форумчанин
Эксперт CЭксперт С++
8160 / 5008 / 1436
Регистрация: 29.11.2010
Сообщений: 13,458
14.06.2013, 17:08 8
Цитата Сообщение от Thinker Посмотреть сообщение
MrGluck, как насчет числа 2?
так а что с ним не так?
2 - простое
вернет true не заходя в цикл
0
Эксперт С++
4254 / 2228 / 203
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
14.06.2013, 17:09 9
Цитата Сообщение от MCKLAS Посмотреть сообщение
Thinker, если вам время позволяет сидеть и всем писать красивые алгоритмы, то это очень хорошо.)

Не по теме:

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

0
Форумчанин
Эксперт CЭксперт С++
8160 / 5008 / 1436
Регистрация: 29.11.2010
Сообщений: 13,458
14.06.2013, 17:09 10
MCKLAS, ничего, что по вашему коду человек учиться будет?
0
Эксперт С++
4254 / 2228 / 203
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
14.06.2013, 17:09 11
Цитата Сообщение от MrGluck Посмотреть сообщение
так а что с ним не так?
2 - простое
вернет true не заходя в цикл
уверены? судя по коду, не вернет
0
Форумчанин
Эксперт CЭксперт С++
8160 / 5008 / 1436
Регистрация: 29.11.2010
Сообщений: 13,458
14.06.2013, 17:11 12
кстати,
Цитата Сообщение от MrGluck Посмотреть сообщение
for (int i = 2; i < sqrt(n); i++)
<= sqrt(n) должно быть

Добавлено через 1 минуту
Thinker, почему это?
2 <= sqrt(2)
равнозначно
2 <= 1.41...
выходим из цикла
return true;
можете проверить, если не верится так
0
Эксперт С++
4254 / 2228 / 203
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
14.06.2013, 17:12 13
да, у вас корень, извиняюсь, не увидел. тогда лучше корень за цикл вынести и убрать из рассмотрения все четные числа, кроме 2
0
Форумчанин
Эксперт CЭксперт С++
8160 / 5008 / 1436
Регистрация: 29.11.2010
Сообщений: 13,458
14.06.2013, 17:13 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;
}
0
544 / 93 / 49
Регистрация: 16.12.2011
Сообщений: 317
14.06.2013, 17:14 15
MrGluck, если человек будет учиться он может подправить и улучшить код.)
Прочитав это
return (n & 1 && n > 1) || n == 2;
вопроситель сразу все поймет.)
0
Форумчанин
Эксперт CЭксперт С++
8160 / 5008 / 1436
Регистрация: 29.11.2010
Сообщений: 13,458
14.06.2013, 17:16 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;
}
1
Эксперт С++
4254 / 2228 / 203
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
14.06.2013, 17:17 17
предлагаю так:
Быстрая проверка натурального числа на простоту
0
Форумчанин
Эксперт CЭксперт С++
8160 / 5008 / 1436
Регистрация: 29.11.2010
Сообщений: 13,458
14.06.2013, 17:19 18
MCKLAS, многие люди учатся на конкретных примерах, им надо сначала пощупать, а потом уже легче будет понять.

Добавлено через 1 минуту
Thinker, ну оно также как у меня, лишь по другому записано. Только вот return до цикла пооптимизированнее будет
0
Эксперт С++
4254 / 2228 / 203
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
14.06.2013, 17:20 19
я имел ввиду 3-й алгоритм, он оптимальнее
0
1402 / 644 / 135
Регистрация: 11.08.2011
Сообщений: 2,299
Записей в блоге: 2
14.06.2013, 17:26 20
Thinker, мне кажется, что ТС не нужен сверх-скоростной алго) Тут любой правильный сойдет, если бы нужна была скорость, то об этом нужно обязательно упомянуть.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
14.06.2013, 17:26

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

Переделать: вывести TRUE, если число является степенью числа 3 и FALSE в противном случае
Ввести целое число. Вывести TRUE ,если число является степенью числа 3 и FALSE в противном...

Описать функцию IsLeapYear(Y) логического типа, которая возвращает True, если год являеятся високосным, и False в противном случае
Описать функцию IsLeapYear(Y) логического типа, которая возвращает True, если год Y (целое...

Описать функцию IsPrime(N) логического типа, возвращающую True, если параметр является простым числом
Описать функцию IsPrime(N) логического типа, возвращающую True, если целый параметр N (&gt; 1)...

Описать функцию isPrime(N) логического типа, возвращающую TRUE, если параметр N(>1) является простым числом
Описать функцию isPrime(N) логического типа, возвращающую TRUE, если целый параметр N(&gt;1) является...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.