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

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

Вернуться   Форум программистов > C/C++ программирование > Visual C++
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 12.11.2014, 18:33   #1
4ndreev
 
Аватар для 4ndreev
 
Регистрация: 12.11.2014
Сообщений: 3
Восклицание Задача о последовательных делителях

Цитата:
Учитель написал на доске некое натуральное число.
После этого первый ученик сказал:
«Это число делится на 1».
Второй сказал:
«Это число делится на 2»,
...,
50-й сказал:
«Это число делится на 50».
И что интересно, только двое из них ошиблись. Более того, два неверных утверждения были сделаны подряд одно за другим
Помогите с задачкой, понимаю как решать на бумаге, но не могу воспроизвести в си.
Вот тут есть решение математическое.

Пока что сделал только разложение от 1 до 50 на простые множители, а дальше (за недостатком знаний) не знаю, что сделать. Следуя решению на указанном раннее сайте, нужно создать массив. Но загвоздка в том, как сделать так, чтобы в пустых ячейках были 0, а в значащих 1(вместо крестика как в табличке на том сайте).


Помогите с задачкой, плииизки
life is real
4ndreev вне форума Ответить с цитированием
Старый 13.11.2014, 09:53   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

4ndreev, спасибо за ссылочку.

по поводу решения задачи в Cи
Вас не смущает, что это целое число: 49984588778161237200
У Вас доступны типы данных int64 ?

э нет.
я ошибся. число в INT64 тоже не помещается!
Нужна длинная арифметика!

Последний раз редактировалось Serge_Bliznykov; 13.11.2014 в 09:58.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 13.11.2014, 13:13   #3
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

Н
Цитата:
о загвоздка в том, как сделать так, чтобы в пустых ячейках были 0, а в значащих 1(вместо крестика как в табличке на том сайте).
1. создаем массив

2. заполняем нулевую строку ПРОВЕРЯЕМЫМИ делителями (2, 4(2,2), 8(2,2,2), 16(2,2,2,2), 32(2,2,2,2,2), 3, 9, 27, 5, 25, 7, 49, .....)
простые числа и их степени не превышающие заданное число

3. заполняем остальные строчки true(1)/False (0) по условию:
число (=номер строки) делится нацело на делитель указанный в нулевой строке соответствующего столбца.
программа — запись алгоритма на языке понятном транслятору

Последний раз редактировалось evg_m; 13.11.2014 в 13:17.
evg_m вне форума Ответить с цитированием
Старый 13.11.2014, 15:30   #4
4ndreev
 
Аватар для 4ndreev
 
Регистрация: 12.11.2014
Сообщений: 3
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
4ndreev, спасибо за ссылочку.

по поводу решения задачи в Cи
Вас не смущает, что это целое число: 49984588778161237200
У Вас доступны типы данных int64 ?

э нет.
я ошибся. число в INT64 тоже не помещается!
Нужна длинная арифметика!

Моего препода это не смущает

Цитата:
Сообщение от evg_m Посмотреть сообщение
2. заполняем нулевую строку ПРОВЕРЯЕМЫМИ делителями (2, 4(2,2), 8(2,2,2), 16(2,2,2,2), 32(2,2,2,2,2), 3, 9, 27, 5, 25, 7, 49, .....)
простые числа и их степени не превышающие заданное число
Вот на этом пунктике у меня жестокий стопорняк

Код:
	int A[50][30], i, j, c = 2, k;

	for (i = 0; i < 5; i++)
	{
		for (j = 0; j < 5; j++)
		{
			while (c <= i)
			{
				if (i % c == 0)
				{
					i /= c;
					k = j;
					A[0][k] = c++;
					k++;
				}
				else c++;
			}
		}
	}
Вот такую вот фигню написал.
Не могу заполнить нулевую строку, вообще не понимаю как сделать это, чтобы она была точь-в-точь как на сайте с решением
life is real

Последний раз редактировалось Stilet; 14.11.2014 в 07:14.
4ndreev вне форума Ответить с цитированием
Старый 14.11.2014, 00:31   #5
Jurijus123
Заблокирован
 
Регистрация: 12.11.2014
Сообщений: 120
По умолчанию

У вас там где while И так далее какое то чепуха,
Вам надо делить пока не получается 1 и прибавлять цывру для под счета количество раз.
Jurijus123 вне форума Ответить с цитированием
Старый 14.11.2014, 07:01   #6
4ndreev
 
Аватар для 4ndreev
 
Регистрация: 12.11.2014
Сообщений: 3
По умолчанию

Цитата:
Сообщение от Jurijus123 Посмотреть сообщение
У вас там где while И так далее какое то чепуха,
Вам надо делить пока не получается 1 и прибавлять цывру для под счета количество раз.
Я так и делаю, у меня while раскладывает числа от 1 до 50 на простые множители.
life is real
4ndreev вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
подсчёт последовательных чисел ыыф Visual C++ 0 09.01.2014 07:28
Задача на способ последовательных приближений Lizzzz Помощь студентам 4 12.04.2013 14:07
Вытащить число из 14 последовательных разрядов vaan.sk Общие вопросы C/C++ 3 05.12.2012 10:04
максимум суммы трех последовательных элементов. Siluet Помощь студентам 3 27.12.2009 22:15