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

Разработка нерекурсивной функции

19.04.2010, 08:17. Просмотров 2486. Ответов 20
Метки нет (Все метки)

Ребят помогите. Надо создать функцию которая для заданного числа (натурального) N возвращает значение true - если число простое и false - если составное. и с помощью этой функции найти количество всех простых чисел на отрезке [a,b].
Я даж незнаю с чего начать. ну с включения библиотек и т.д. это понятно. Вот как создать эту функцию с тру и фалс? наверно с помощью bool... и как в с++ задать отрезок?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
19.04.2010, 08:17
Ответы с готовыми решениями:

Как привести несколько рекурсивных функций к одной нерекурсивной?
Допустим, есть функции f1, f2, f3 и т. Д. К примеру в f1 присутствует параллельный однократный...

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

Реализовать рекурсивную функцию вычисления многочленов Эрмита, и сравнить количество действий с нерекурсивной
Реалізувати рекурсивну функцiю для обчислення многочленiв Ермiта i порiвняти кількість дій у...

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

20
Эксперт С++
2330 / 1703 / 148
Регистрация: 06.03.2009
Сообщений: 3,675
19.04.2010, 08:27 2
Цитата Сообщение от LiLi R. Посмотреть сообщение
Вот как создать эту функцию с тру и фалс?
Функция, проверяющая является ли число протсым
C++
1
2
3
4
5
6
7
8
9
bool IsSimpleNumber(int n) {
  if (n < 2)
    return false;
 
  for (int i = 2; i * i <= n; i++)
    if (n % i == 0) return false;
 
  return true;
}
Цитата Сообщение от LiLi R. Посмотреть сообщение
как в с++ задать отрезок?
C++
1
2
int a;  // Начало отрезка
int b;  // Конец отрезка
Проходим от a до b, проверяем является ли текущее число простым, если да увеличиваем счетчик количества простых чисел на единицу.
0
0 / 0 / 0
Регистрация: 15.04.2010
Сообщений: 82
19.04.2010, 08:31  [ТС] 3
CyBOSSeR, тфу ты черт...как просто...даж стыдно...спасиб седня попробую.
0
0 / 0 / 0
Регистрация: 15.04.2010
Сообщений: 82
20.04.2010, 21:29  [ТС] 4
CyBOSSeR,
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
using namespace std;
 
int a,b;
cout<<"Введите начало отрезка"; cin>>a;
cout<<"Введите конец отрезка"; cin>>b;
bool IsSimpleNumber(int n) {
  if (n < 2)
    return false;
 
  for (int i = 2; i * i <= n; i++)
    if (n % i == 0) return false;
 
  return true;
}
Вот дальше я встала в тупик.
0
Эксперт С++
2330 / 1703 / 148
Регистрация: 06.03.2009
Сообщений: 3,675
20.04.2010, 21:40 5
LiLi R., код
Цитата Сообщение от LiLi R. Посмотреть сообщение
C++
1
2
3
int a,b;
cout<<"Введите начало отрезка"; cin>>a;
cout<<"Введите конец отрезка"; cin>>b;
необходимо внести в главную функцию, которой я, кстати, не вижу вообще.
Вот заготовка, наполни ее смыслом:
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>
 
bool IsSimpleNumber(int n) {
  if (n < 2)
    return false;
 
  for (int i = 2; i * i <= n; i++)
    if (n % i == 0) return false;
 
  return true;
}
 
int main()
{
  // Здесь необходимо получить от пользователя 2 числа
  // a и b (начало и конец отрезка)
  // ...
  // Здесь необходимо циклом пройтись от a до b,
  // проверяя является ли текущее число простым
  // с помощью функции IsSimpleNumber, если число
  // простое (функция вернула true) - выводим его
 
  return 0;
}
0
0 / 0 / 0
Регистрация: 15.04.2010
Сообщений: 82
20.04.2010, 21:48  [ТС] 6
CyBOSSeR, как говорится поспешишиь и люди будут угарать над этим. Все прекрасно за исключением два "но":
1 - как должна выглядеть строка вызова IsSimpleNumber
2 - как вывести кол-во простых чисел
0
Эксперт С++
2330 / 1703 / 148
Регистрация: 06.03.2009
Сообщений: 3,675
20.04.2010, 22:15 7
Цитата Сообщение от LiLi R. Посмотреть сообщение
1 - как должна выглядеть строка вызова IsSimpleNumber
C++
1
bool is_simple_number = IsSimpleNumber(curr_number);
Цитата Сообщение от LiLi R. Посмотреть сообщение
2 - как вывести кол-во простых чисел
C++
1
std::cout << simple_number_count << std::endl;
0
0 / 0 / 0
Регистрация: 15.04.2010
Сообщений: 82
20.04.2010, 23:45  [ТС] 8
CyBOSSeR, а за место curr_number и simple_number_count что должно быть в моей задаче?
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;
 
bool IsSimpleNumber(int n) {
  if (n < 2)
    return false;
 
  for (int i = 2; i * i <= n; i++)
    if (n % i == 0) return false;
 
  return true;}
 
int main()
{int a,b;
cout<<"Введите начало отрезка"; cin>>a;
cout<<"Введите конец отрезка"; cin>>b;
{   for (a=0; a<b; a++)
    bool is_simple_number = IsSimpleNumber(curr_number);}
std::cout << simple_number_count << std::endl;
system("PAUSE");
return 0;}
0
Эксперт С++
2330 / 1703 / 148
Регистрация: 06.03.2009
Сообщений: 3,675
20.04.2010, 23:57 9
LiLi R., еще подсказка:
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>
 
// IsSimpleNumber
 
int main() {
  int a;
 
  std::cout << "a = ";
  std::cin >> a;
 
  int b;
 
  std::cout << "b = ";
  std::cin >> b;
 
  int simple_number_count = 0;
 
  for (int i = a; i < b; ++i)
    // Вставить нужное
 
  std::cout << "simple_number_count: " << simple_number_count << std::endl;
 
  return 0;
}
Вставить 2 строки. Подумай.
0
0 / 0 / 0
Регистрация: 15.04.2010
Сообщений: 82
21.04.2010, 00:31  [ТС] 10
CyBOSSeR,
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
#include <iostream>
using namespace std;
 
bool IsSimpleNumber(int n) {
  if (n < 2)
    return false;
 
  for (int i = 2; i * i <= n; i++)
    if (n % i == 0) return false;
 
  return true;}
 
int main() {
  int a;
  std::cout << "a = ";
  std::cin >> a;
  int b;
  std::cout << "b = ";
  std::cin >> b;
  int simple_number_count = 0;
  for (int i = a; i < b; ++i){
      bool is_simple_number = IsSimpleNumber(a < b);}
std::cout << "simple_number_count: " << simple_number_count << std::endl;
 system("PAUSE");
  return 0;
}
Так? вижака рядом нет проверить
0
Эксперт С++
2330 / 1703 / 148
Регистрация: 06.03.2009
Сообщений: 3,675
21.04.2010, 00:47 11
Цитата Сообщение от LiLi R. Посмотреть сообщение
C++
1
IsSimpleNumber(a < b)
LiLi R., посмотри внимательно на функцию IsSimpleNumber. Что она принимает? А что ты ей суешь?
Данная функция принимает целое число и возвращает true, если оно простое, иначе - false.
Если функция вернула true необходимо увеличить счетчик количества простых чисел.
0
0 / 0 / 0
Регистрация: 15.04.2010
Сообщений: 82
21.04.2010, 01:23  [ТС] 12
CyBOSSeR,
C++
1
bool is_simple_number = IsSimpleNumber(i)
Так?
0
Эксперт С++
2330 / 1703 / 148
Регистрация: 06.03.2009
Сообщений: 3,675
21.04.2010, 01:27 13
Цитата Сообщение от LiLi R. Посмотреть сообщение
Так?
Да. Но это еще не все. Осталось увеличение счетчика, если is_simple_number == true.
0
0 / 0 / 0
Регистрация: 15.04.2010
Сообщений: 82
21.04.2010, 01:29  [ТС] 14
CyBOSSeR, ну хоть в правильном направлении иду...
0
Эксперт С++
2330 / 1703 / 148
Регистрация: 06.03.2009
Сообщений: 3,675
21.04.2010, 01:32 15
LiLi R., я же сказал, да. Теперь надо с счетчиком разобраться.
0
0 / 0 / 0
Регистрация: 15.04.2010
Сообщений: 82
21.04.2010, 01:37  [ТС] 16
CyBOSSeR,
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 <iostream>
using namespace std;
 
bool IsSimpleNumber(int n) {
  if (n < 2)
    return false;
 
  for (int i = 2; i * i <= n; i++)
    if (n % i == 0) return false;
 
  return true;}
 
int main() {
  int a;
  std::cout << "a = ";
  std::cin >> a;
  int b;
  std::cout << "b = ";
  std::cin >> b;
  int simple_number_count = 0;
  for (int i = a; i < b; ++i){
      bool is_simple_number = IsSimpleNumber(i);
        simple_number_count++; }
std::cout << "simple_number_count: " << simple_number_count << std::endl;
 system("PAUSE");
  return 0;
}
мне кажется или я неправа?
а = -2
в = 9
simple_number_count = 11
получается я просто посчитала кол-во целых чисел в отрезке...
0
Эксперт С++
2330 / 1703 / 148
Регистрация: 06.03.2009
Сообщений: 3,675
21.04.2010, 01:45 17
LiLi R., не права. Проверки нет.
Ладно... Вот код:
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
#include <iostream>
 
// IsSimpleNumber
 
int main() {
  int a;
 
  std::cout << "a = ";
  std::cin >> a;
 
  int b;
 
  std::cout << "b = ";
  std::cin >> b;
 
  int simple_number_count = 0;
 
  for (int i = a; i < b; ++i)
    if (IsSimpleNumber(i))
      ++simple_number_count;
 
  std::cout << "simple_number_count: " << simple_number_count << std::endl;
 
  return 0;
}
0
0 / 0 / 0
Регистрация: 15.04.2010
Сообщений: 82
21.04.2010, 02:08  [ТС] 18
CyBOSSeR, разве я не использовала этот код в предыдущем сообщении?
0
Эксперт С++
2330 / 1703 / 148
Регистрация: 06.03.2009
Сообщений: 3,675
21.04.2010, 08:10 19
LiLi R., запусти и проверь.
0
0 / 0 / 0
Регистрация: 15.04.2010
Сообщений: 82
21.04.2010, 18:47  [ТС] 20
CyBOSSeR, Последовательность простых чисел начинается так:

2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59...
а=1
в=50
count = 15
CyBOSSeR, БОЛЬШОЕ СПАСИБО ЧТО ТЕРПЕЛ. Я дура точку с запятой после if (IsSimpleNumber(i)) ставила. Теперь все нормально работает.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
21.04.2010, 18:47

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

Функции в с++ (разработка и использование)
Привет всем кто читает эту тему! Пожалуйста, кому не трудно помогите с задачами на функци,...

Разработка программ, содержащих функции.
Вычислить значение выражения: у:=а1*х4+а2*х3+а3*х2+а4*х+а5, где коэффициенты а1, а2, а3, а4, а5 и...

Разработка рекурсивных алгоритмов для вычисления функции
Сразу к сути!!! Я должен сделать рекурсию функции y=x+3-e^-x. Что то y2 не выводит, ошибок нету! ...

Разработка функции для подсчета процентного соотношения в строке
Здравствуйте.Задание делается через Project. Собственно, само задание: Разработать функцию (...


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

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

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