сумма квадратов

Модераторы: Hawk, Romeo, Absurd, DeeJayC, WinMain

Ответить
13-GK-13
Сообщения: 6
Зарегистрирован: 10 окт 2010, 09:21

можно ли заданное натуральное число М представить в виде суммы двух квадратов натуральных чисел? Какие буду предложения?
Аватара пользователя
Decoder
Сообщения: 308
Зарегистрирован: 19 фев 2008, 23:11
Откуда: Moscow

Тебе что нужно получить, готовый код или методику проверки суммы квадратов?
А если число само является квадратом натурального числа, то его можно представить как сумму самого себя и ноля?
Ноль ведь тоже является квадратом самого себя, как и единица.
Поумнеть несложно, куда труднее от дури избавиться.
azrael
Сообщения: 89
Зарегистрирован: 31 май 2009, 15:30
Контактная информация:

Decoder писал(а):Тебе что нужно получить, готовый код или методику проверки суммы квадратов?
А если число само является квадратом натурального числа, то его можно представить как сумму самого себя и ноля?
Ноль ведь тоже является квадратом самого себя, как и единица.

Ага, только 0 - это не натуральное число.
Аватара пользователя
Romeo
Сообщения: 3126
Зарегистрирован: 02 мар 2004, 17:25
Откуда: Крым, Севастополь
Контактная информация:

azrael писал(а):Ага, только 0 - это не натуральное число.
Тонко подмечено :)

Вообще не каждое натуральное число можно представить в виде суммы квадратов двух натуральных чисел. Сей факт достаточно интуитивен для тех, кто в школе решал много задачек на прямоугольные треугольники и знает, что такое Пифагорова тройка. Строго доказательства я сходу не приведу, но, я думаю, достаточно указать контрпример для того, чтобы утверждение было опровергнуто :) Пример - число 3.

1*1 + 1*1 = 2
1*1 + 2*2 = 5

Все остальные пары будут давать числа, большие, чем 5, так что и 3 (как и 4) представить в виде суммы квадратов нельзя.

Зато, господа, скажу по секрету, что всякое натуральное число (оказывается), можно представить в виде разности квадратов. Доказательство достаточно прозрачное. Нужно рассмотреть отдельно чётные и нечётные числа. Для чётных рассмотреть разность квадратов двух чисел X и X+2. Для нечётных рассмотреть разность квадратов двух чисел X и X+1. Раскрыть скобки и всё станет ясно.
Entites should not be multiplied beyond necessity @ William Occam
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
Аватара пользователя
WinMain
Сообщения: 929
Зарегистрирован: 14 янв 2005, 10:30
Откуда: Москва
Контактная информация:

Суть в том, что любой квадрат натурального числа - есть сумма арифметической прогрессии вида
1 + 3 + 5 + 7 + ... и т.д.
Т.е. если ряд чисел начинается с 1 и каждый следующий элемент ряда больше предыдущего на 2, то сумма чисел этого ряда всегда будет являться квадратом натурального числа. Это значение будет равно квадрату числа элементов прогрессии.
К примеру, если в прогрессии имеется 5 элементов: 1, 3, 5, 7, 9, то их сумма будет равна 5*5 = 25.
Следовательно, сумма квадратов двух натуральных чисел является суммой двух прогрессий.
Чтобы определить, является ли натуральное число суммой двух квадратов, нужно от исходного числа последовательно отнимать элементы прогресии, а полученную разницу проверять, является ли она квадратом целого числа или нет. Есть числа, которые можно разложить на сумму квадратов несколькими способами, например: число 50 можно представить как сумму 49+1 или как 25+25. По условию задачи достаточно всего одного варианта.
Таким образом, нужно написать лишь цикл, в котором значение исходного числа будет последовательно уменьшаться на элементы прогрессии 1, 3, 5, ... и так до тех пор, пока результат не окажется равен квадрату целого числа или не достигнет половины значения исходного числа.
13-GK-13
Сообщения: 6
Зарегистрирован: 10 окт 2010, 09:21

спасибо други! Вариант с прогрессией мне очень понравился! Огромное спасибо!!!
BBB
Сообщения: 1298
Зарегистрирован: 27 дек 2005, 13:37

WinMain, браво! Неординарное решение! :)
Ответить