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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 18.11.2021, 21:06   #1
YUura543
Новичок
Джуниор
 
Регистрация: 18.11.2021
Сообщений: 3
По умолчанию Написать программу, которая выводит наибольший простой палиндром не больше N

Здравствуйте, нужно написать программу, которая выводит наибольший простой палиндром не больше введённого числа с клавиатуры с использованием do while на языке программирования C#
YUura543 вне форума Ответить с цитированием
Старый 18.11.2021, 21:17   #2
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 15,837
По умолчанию

Цитата:
Сообщение от YUura543 Посмотреть сообщение
нужно написать программу
А кому нужно? Мне, например, не нужно...
Arigato вне форума Ответить с цитированием
Старый 18.11.2021, 21:25   #3
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,429
По умолчанию

Код:
// ввести N
N = N + 1;
do {
    N = N - 1;
} while (!(is_palindrome(N) & is_prime(N)));
// вывести N
Напишите еще 2 функции для проверки числа и программа готова
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )

Последний раз редактировалось BDA; 18.11.2021 в 21:27.
BDA вне форума Ответить с цитированием
Старый 19.11.2021, 07:11   #4
YUura543
Новичок
Джуниор
 
Регистрация: 18.11.2021
Сообщений: 3
По умолчанию

Помогите, пожалуйста, как это исправить, чтобы выводился простой палиндром, ближащий от введенего числа, но не больше самого введенего?
Код:
#include <stdio.h>

int is_prime(int n)
{
	int b;
	do
	{
		b = 0;
		--n;
		for (int i = n; i > 0; --i)
		{
			if (n % i == 0) b++;
		}
	} while (b > 2);
	printf("%d", n);
	return 0;
}

int is_palik(int n)
{
	int b = 0;
	while (n)
	{
		b = n % 10 + 10 * b;
		n = n / 10;
	}
	return b;
}

int main()
{
	int n;
	scanf_s("%d", &n);
	n = n + 1;
	do {
		n = n - 1;
	} while (!(is_prime(n) & is_palik(n)));
	return n;
}

Последний раз редактировалось YUura543; 19.11.2021 в 07:19.
YUura543 вне форума Ответить с цитированием
Старый 19.11.2021, 07:30   #5
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,429
По умолчанию

Как-то вы лихо соскочили с C# на обычный C. Предполагается, что функция is_palindrome сообщит, палиндром ли число, а не вернет перевернутое число. Также, предполагается, что функция is_prime сообщит, простое ли число, а не будет искать наибольшее простое число, не превосходящее заданное. Да и в функции main надо напечатать n, а не вернуть, как результат работы программы.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 19.11.2021, 08:02   #6
YUura543
Новичок
Джуниор
 
Регистрация: 18.11.2021
Сообщений: 3
По умолчанию

А можно сделать, чтобы сначала функция is_prime искало простое число и потом функция is_palik проверяла, палиндром оно или нет
Если нет, то ищется следующее простое число и опять проверяется, пока не будет выполнено условие? Просто я вообще не понимаю как это сделать ((
YUura543 вне форума Ответить с цитированием
Старый 19.11.2021, 18:30   #7
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,429
По умолчанию

Да сделать можно по-всякому. Только проверить число на простоту "дороже", чем на палиндромность. Поэтому лучше среди чисел искать палиндромы, а среди палиндромов простые числа, а не наоборот.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
написать программу, которая сравнивает a и b и выводит в качестве ответа (с#) Nekro95 Помощь студентам 1 09.02.2013 10:58
Написать программу, которая выводит слова с одинаковыми буквами Tarne Паскаль, Turbo Pascal, PascalABC.NET 2 20.10.2012 17:12
Написать программу,которая выводит таблицу умножения например на 7. _Алексей_ Помощь студентам 1 13.06.2012 16:16
Написать программу, которая выводит на экран две секторные диаграммы Lexia_nick_otin Помощь студентам 3 10.11.2010 17:39
Написать программу которая выводит таблицу значений функйии akimbaev Паскаль, Turbo Pascal, PascalABC.NET 1 01.10.2008 00:21