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

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

Восстановить пароль Регистрация
 
 
LiLi R.
 Аватар для LiLi R.
0 / 0 / 0
Регистрация: 15.04.2010
Сообщений: 82
19.04.2010, 08:17     Разработка нерекурсивной функции #1
Ребят помогите. Надо создать функцию которая для заданного числа (натурального) N возвращает значение true - если число простое и false - если составное. и с помощью этой функции найти количество всех простых чисел на отрезке [a,b].
Я даж незнаю с чего начать. ну с включения библиотек и т.д. это понятно. Вот как создать эту функцию с тру и фалс? наверно с помощью bool... и как в с++ задать отрезок?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.04.2010, 08:17     Разработка нерекурсивной функции
Посмотрите здесь:

Функции в с++ (разработка и использование) C++
C++ Разработка программ, содержащих функции.
Разработка рекурсивной функции для перевода числа из десятичной сс в двоичную C++
Разработка функции (размещение строки s1 в середине строки s2 длиной l) C++
Проверить наличие в списке заданного числа с помощью рекурсивной и нерекурсивной функций C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
CyBOSSeR
Эксперт C++
 Аватар для CyBOSSeR
2294 / 1664 / 86
Регистрация: 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, проверяем является ли текущее число простым, если да увеличиваем счетчик количества простых чисел на единицу.
LiLi R.
 Аватар для LiLi R.
0 / 0 / 0
Регистрация: 15.04.2010
Сообщений: 82
19.04.2010, 08:31  [ТС]     Разработка нерекурсивной функции #3
CyBOSSeR, тфу ты черт...как просто...даж стыдно...спасиб седня попробую.
LiLi R.
 Аватар для LiLi R.
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;
}
Вот дальше я встала в тупик.
CyBOSSeR
Эксперт C++
 Аватар для CyBOSSeR
2294 / 1664 / 86
Регистрация: 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;
}
LiLi R.
 Аватар для LiLi R.
0 / 0 / 0
Регистрация: 15.04.2010
Сообщений: 82
20.04.2010, 21:48  [ТС]     Разработка нерекурсивной функции #6
CyBOSSeR, как говорится поспешишиь и люди будут угарать над этим. Все прекрасно за исключением два "но":
1 - как должна выглядеть строка вызова IsSimpleNumber
2 - как вывести кол-во простых чисел
CyBOSSeR
Эксперт C++
 Аватар для CyBOSSeR
2294 / 1664 / 86
Регистрация: 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;
LiLi R.
 Аватар для LiLi R.
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;}
CyBOSSeR
Эксперт C++
 Аватар для CyBOSSeR
2294 / 1664 / 86
Регистрация: 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 строки. Подумай.
LiLi R.
 Аватар для LiLi R.
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;
}
Так? вижака рядом нет проверить
CyBOSSeR
Эксперт C++
 Аватар для CyBOSSeR
2294 / 1664 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
21.04.2010, 00:47     Разработка нерекурсивной функции #11
Цитата Сообщение от LiLi R. Посмотреть сообщение
C++
1
IsSimpleNumber(a < b)
LiLi R., посмотри внимательно на функцию IsSimpleNumber. Что она принимает? А что ты ей суешь?
Данная функция принимает целое число и возвращает true, если оно простое, иначе - false.
Если функция вернула true необходимо увеличить счетчик количества простых чисел.
LiLi R.
 Аватар для LiLi R.
0 / 0 / 0
Регистрация: 15.04.2010
Сообщений: 82
21.04.2010, 01:23  [ТС]     Разработка нерекурсивной функции #12
CyBOSSeR,
C++
1
bool is_simple_number = IsSimpleNumber(i)
Так?
CyBOSSeR
Эксперт C++
 Аватар для CyBOSSeR
2294 / 1664 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
21.04.2010, 01:27     Разработка нерекурсивной функции #13
Цитата Сообщение от LiLi R. Посмотреть сообщение
Так?
Да. Но это еще не все. Осталось увеличение счетчика, если is_simple_number == true.
LiLi R.
 Аватар для LiLi R.
0 / 0 / 0
Регистрация: 15.04.2010
Сообщений: 82
21.04.2010, 01:29  [ТС]     Разработка нерекурсивной функции #14
CyBOSSeR, ну хоть в правильном направлении иду...
CyBOSSeR
Эксперт C++
 Аватар для CyBOSSeR
2294 / 1664 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
21.04.2010, 01:32     Разработка нерекурсивной функции #15
LiLi R., я же сказал, да. Теперь надо с счетчиком разобраться.
LiLi R.
 Аватар для LiLi R.
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
получается я просто посчитала кол-во целых чисел в отрезке...
CyBOSSeR
Эксперт C++
 Аватар для CyBOSSeR
2294 / 1664 / 86
Регистрация: 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;
}
LiLi R.
 Аватар для LiLi R.
0 / 0 / 0
Регистрация: 15.04.2010
Сообщений: 82
21.04.2010, 02:08  [ТС]     Разработка нерекурсивной функции #18
CyBOSSeR, разве я не использовала этот код в предыдущем сообщении?
CyBOSSeR
Эксперт C++
 Аватар для CyBOSSeR
2294 / 1664 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
21.04.2010, 08:10     Разработка нерекурсивной функции #19
LiLi R., запусти и проверь.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.04.2010, 18:47     Разработка нерекурсивной функции
Еще ссылки по теме:

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

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

Или воспользуйтесь поиском по форуму:
LiLi R.
 Аватар для LiLi R.
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)) ставила. Теперь все нормально работает.
Yandex
Объявления
21.04.2010, 18:47     Разработка нерекурсивной функции
Ответ Создать тему
Опции темы

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