Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.12.2016, 00:24   #1
vladrrom
Пользователь
 
Регистрация: 14.12.2016
Сообщений: 54
По умолчанию Разработать нерекурсивную функцию C++

Разработать нерекурсивную функцию, которая для заданного натурального числа N возвращает
значение true — если число простое, false — если число составное. С помощью данной функции вывести на экран все простые числа на отрезке [a, b]

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

В C++
vladrrom вне форума Ответить с цитированием
Старый 16.12.2016, 00:44   #2
ura_111
Участник клуба
 
Регистрация: 14.05.2016
Сообщений: 1,793
По умолчанию

Проверка простоты числа N:
проверяешь последовательно все потенциальные множители (от 2 до "корень из числа"). Если остаток от деления (какого-нибудь множителя) равен 0-лю, значит число составное; а если в интервале [2, корень(N)] не нашлось потенциального множителя, тогда число простое.

Например, "число 15 по модулю 3" ("остаток от деления 15 на 3" равен "0", значит число составное и имеет по крайней мере один множитель "3"):
Код:
15%3=0

Сначала сделай без функции (всё в майн), а потом (когда заработает) переходи к функции... А потом, когда сделаешь функцию, переходи ко второй части задания.
ura_111 вне форума Ответить с цитированием
Старый 16.12.2016, 00:52   #3
vladrrom
Пользователь
 
Регистрация: 14.12.2016
Сообщений: 54
По умолчанию

main такой подойдёт?

int main()
{
int a, b;
cout << "Enter a:"; cin >> a;
cout << "Enter b:"; cin >> b;
for (int i = a; i <= b; i++)
{

if (fun)
cout << i << endl;
}
system("pause");
return 0;
}
vladrrom вне форума Ответить с цитированием
Старый 16.12.2016, 00:54   #4
ura_111
Участник клуба
 
Регистрация: 14.05.2016
Сообщений: 1,793
По умолчанию

Меняй "N" и смотри результат:

Код:
#include <iostream>
using namespace std;

int main()
{
	int N = 15;
	bool flag = false;
	for (int i = 2; i < sqrt(N); i++)
	{
		if (N%i == 0)
		{
			cout << "mnogitel= " << i;
			flag = true;
			break;		
		}
	}		
	cout << endl;
	system("pause");
	return 0;
}
ura_111 вне форума Ответить с цитированием
Старый 16.12.2016, 00:57   #5
ura_111
Участник клуба
 
Регистрация: 14.05.2016
Сообщений: 1,793
По умолчанию

попробуй подсунуть программе как составные так и простые числа и смотри адекватная ли реакция на эти данные.

Последний раз редактировалось ura_111; 16.12.2016 в 00:59.
ura_111 вне форума Ответить с цитированием
Старый 16.12.2016, 01:14   #6
vladrrom
Пользователь
 
Регистрация: 14.12.2016
Сообщений: 54
По умолчанию

Никак не пойму как сделать так, чтобы он это проводил на заданном отрезке.
За код спасибо.
vladrrom вне форума Ответить с цитированием
Старый 16.12.2016, 01:16   #7
vladrrom
Пользователь
 
Регистрация: 14.12.2016
Сообщений: 54
По умолчанию

Вопрос: мне необходимо написать функции по выводу всех значений на заданном отрезке? То есть скелет готов и осталась только ф-ция?
vladrrom вне форума Ответить с цитированием
Старый 16.12.2016, 01:24   #8
vladrrom
Пользователь
 
Регистрация: 14.12.2016
Сообщений: 54
По умолчанию

У меня был этот код, но его не приняли.

Код:
int main()
{
	int a, b;
	cout << "Enter a:"; cin >> a;
	cout << "Enter b:"; cin >> b;
	for (int i = a; i <= b; i++)
	{
		bool fun = true;
		for (int j = 2; j < 10; j++)
		{
			if (j == i) continue;
			if (i % j == 0)
			{
				fun = false;
				break;
			}
		}
		if (fun) cout << i << endl;
	}
	system("pause");
	return 0;
}
vladrrom вне форума Ответить с цитированием
Старый 16.12.2016, 01:44   #9
ura_111
Участник клуба
 
Регистрация: 14.05.2016
Сообщений: 1,793
По умолчанию

Практика - критерий правильности.
Запускай свой код и смотри что выводит на каком нибудь тестовом промежутке. Если выводит норм. (с ручным счётом сравнивай) тогда неси свой код снова преподавателю...
___________________________________ __

И попробуй в мой код тоже ввести промежуток и посмотри результат. Сравни результаты этих двух программ.
ura_111 вне форума Ответить с цитированием
Старый 16.12.2016, 10:51   #10
ura_111
Участник клуба
 
Регистрация: 14.05.2016
Сообщений: 1,793
По умолчанию

Вот тебе таблица простых чисел:

11.jpg

т.е. выберешь себе тестовый промежуток, отделишь в нём простые/составные числа и сопоставишь ручной счёт с результатами работы двух программ...
Понимаешь? Тебе нужен какой-то критерий правильности работы программы...
ura_111 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Написать нерекурсивную функцию вычисления выражения, используя стек Max00766 Паскаль, Turbo Pascal, PascalABC.NET 16 03.04.2016 10:09
разработать рекурсивную функцию с++ L.Julia Visual C++ 0 08.05.2013 12:30
Разработать функцию генерирующую псевдослучайную последовательность чисел в DELPHI Алексей_xXx Помощь студентам 0 03.05.2009 11:05
Разработать функцию генерирующую псевдослучайную последовательность чисел в DELPHI Алексей_xXx Помощь студентам 0 02.05.2009 21:34
Разработать функцию на С++ ls5Latin(constS:string):boolean GTP_edition Общие вопросы C/C++ 3 25.04.2008 18:25