Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2013.03.22;
Скачать: CL | DM;

Вниз

Можно ли заданное натур. число М представить в виде суммы 2-х ква   Найти похожие ветки 

 
Опять я   (2012-09-09 17:30) [0]

Можно ли заданное натур. число М представить в виде суммы 2-х квадратов натуральных чисел. Например 25=3^2+4^2?

Задача детская, но я не могу понять.


 
Юрий Зотов ©   (2012-09-09 17:56) [1]

3, 4, 5, 6, 7...


 
Опять я   (2012-09-09 17:57) [2]

Помогите! Подтолкните к решению!


 
Юрий Зотов ©   (2012-09-09 17:57) [3]

Правда, 4 = 2^2 + 0^2, поэтому 4 из этого ряда надо убрать.


 
Опять я   (2012-09-09 18:04) [4]

Вот получаем мы число 665 и что с ним делать?


 
Юрий Зотов ©   (2012-09-09 18:14) [5]


> Опять я   (09.09.12 17:57) [2]
> Помогите! Подтолкните к решению!

Дык... пример показывает, что в общем случае решения нет. То есть, не любое число можно представить таким образом.

А проверка "в лоб" простая. Имеем: X^2 + Y^2 = M, причем M известно. Надо найти пару X и Y, либо убедиться, что такой пары не существует.

Объявляем X:integer и Y:extended. Делаем цикл по X от нуля до TRUNC(SQRT(M)). На каждом витке цикла вычисляем Y:
Y =  SQRT(M - X^2)
и проверяем Y на целочисленность. Если Y целое, то пара найдена, если цикл кончился - такой пары нет.


 
Pavia ©   (2012-09-09 18:15) [6]

function Foo(n:Integer):Boolean;
var i,j:Integer;
begin
result:=False;
for i:=1 to бесконечность do
for j:=1 to бесконечность do
 if i*i+j*j=n then result:=True;
end;


> Вот получаем мы число 665 и что с ним делать?

передать в процедуру.


 
Юрий Зотов ©   (2012-09-09 18:26) [7]

procedure TForm1.Button1Click(Sender: TObject);
var
 M, X: cardinal;
 Y: extended;
begin
 M := StrToInt(Edit1.Text);
 for X := 0 to Trunc(Sqrt(M)) do
 begin
   Y := Sqrt(M - X * X);
   if Y = Trunc(Y) then
   begin
     Caption := Format("%d^2 + %d^2 = %d", [X, Trunc(Y), M]);
     Exit
   end
 end;
 Caption := "Нет такой пары"
end;


 
Опять я   (2012-09-09 18:40) [8]

Спасибо, понятно.

Нам задают какие-то странные задачи,

Вот:

напечатать все цифры числа 3^512


 
Опять я   (2012-09-09 18:41) [9]

Понятно, такое число не может вместить не один тип!
Даже Int64 или как его там в Pascal.


 
Sha ©   (2012-09-09 18:51) [10]

> Опять я   (09.09.12 18:41) [9]

умножение в столбик проходят в начальной школе


 
Опять я   (2012-09-09 18:56) [11]

Я бы сделал:


  Result:= Power(3, 512);


Но это никуда не лезет.

В смысле столбиком?


 
Юрий Зотов ©   (2012-09-09 19:02) [12]

> напечатать все цифры числа 3^512
> Понятно, такое число не может вместить не один тип!

Значит, надо подумать и найти другой способ. Например, можно использовать то, что число должно 512 раз делиться на 3, после чего должна получиться 1. Ну и признак делимости на 3 тоже может пригодиться: число делится на 3 тогда и только тогда, когда сумма его цифр делится на 3. И т.п.


 
Inovet ©   (2012-09-09 19:03) [13]

> [11] Опять я   (09.09.12 18:56)
> В смысле столбиком?

Всмысле, что не надо весь результат хранить, могли задать и 3^2^32 — суть та же.


 
Юрий Зотов ©   (2012-09-09 19:12) [14]


> Опять я   (09.09.12 18:40) [8]
> Нам задают какие-то странные задачи,
> напечатать все цифры числа 3^512  

Не странные, очень хорошие задачи. Развивают алгоритмическое мышление, а оно программисту необходимо.


 
Pavia ©   (2012-09-09 19:12) [15]


> Понятно, такое число не может вместить не один тип!

Может. Называется массив.


 
Опять я   (2012-09-09 19:37) [16]


> Юрий Зотов ©   (09.09.12 19:12) [14]


Только не уходите! Пожалуйста! Вы мне очень нужны.


 
Опять я   (2012-09-09 19:39) [17]

Допустим дано число попроще: 2^5 = 32.

Зная число и степень - понятно как его получить.
Но не понятно что делать дальше!


procedure Proc;
var
 i  : LongWord;
 Res: LongWord;
begin
 Res:= 1;
 For i:= 1 to 5 do
   Res:= Res * 2;

 Form1.Caption:= IntToStr(Res); // 32.
end;


 
Юрий Зотов ©   (2012-09-09 19:49) [18]


> Опять я   (09.09.12 19:37) [16]

Только я один? Странно. А другие?

Например, Sha - ОЧЕНЬ сильный алгоритмист. Причем именно в задачах подобного рода, когда решение "в лоб" не прокатывает по памяти, по скорости и т.п. Очень советую к нему прислушиваться - он говорит не просто так, он подсказывает. Только в его подсказки вдуматься нужно.


 
Юрий Зотов ©   (2012-09-09 19:58) [19]


> Опять я   (09.09.12 19:39) [17]

Подсказали ведь, уже трое. Умножение столбиком надо делать, а результат хранить в массиве, каждый элемент которого содержит одну десятичную цифру.

То же самое мы делаем на бумаге - каждая цифра умножается на 3, начиная с младшей, а если идет перенос, то корректируются старшие цифры.


 
Sha ©   (2012-09-09 20:14) [20]


> Опять я   (09.09.12 19:39) [17]
> Зная число и степень - понятно как его получить.
> Но не понятно что делать дальше!


Вот так

procedure TMainForm.Button1Click(Sender: TObject);
var
 a: TLong;
 i: integer;
begin;
 SetLength(a,1); a[0]:=3;
 i:=1;
 repeat;
   a:=Mul(a,a);
   i:=i+i;
   until i>=512; //3^512
 Memo1.Lines.Add(MulAsStr(a));
 end;


получишь ответ:
19323349832288915105454068722019581055401465761603328550184537628902466746415537 00001793942978602935439008232929458611950515350910133294088409804047872863954256 05501337273994827780623224073723381210433996682422765917915046589858829952724365 41441

тебе осталось дописать 20-30 строчек


 
DVM ©   (2012-09-09 20:51) [21]


>
> Опять я   (09.09.12 17:30) 
> Можно ли заданное натур. число М представить в виде суммы
> 2-х квадратов натуральных чисел. Например 25=3^2+4^2?

Следствие из теоремы Ферма-Эйлера:

Натуральное число представимо в виде суммы двух квадратов тогда и только тогда, когда любое простое число вида 4k + 3 входит в его разложение на простые множители в чётной степени.

http://ru.wikipedia.org/wiki/%D0%A2%D0%B5%D0%BE%D1%80%D0%B5%D0%BC%D0%B0_%D0%A4%D0%B5%D1%80%D0%BC%D0%B0_%E2%80%94_%D0%AD%D0%B9%D0%BB%D0%B5%D1%80%D0%B0


 
Опять я   (2012-09-09 20:58) [22]

Вот еще одна:


Написать программу, которая считывает натур. числа m и n и находит n/m с точностью до 25 знаков, m и n <=1000


Опять не понять. :\.
Задачи по типу: "Создайте телефонную базу" - я решаю, а эти мозги мои выносят.


 
Юрий Зотов ©   (2012-09-09 21:04) [23]


> Опять я   (09.09.12 20:58) [22]

Тоже столбиком, только уже деление.


 
Sha ©   (2012-09-09 21:07) [24]


> Опять я   (09.09.12 20:58) [22]


А это деление столбиком.
Все три задачи на умение писать элементарные циклы и немного думать.


 
Sha ©   (2012-09-09 21:08) [25]

Юрий Зотов ©   (09.09.12 21:04) [23]

опередил )


 
Логопед   (2012-09-09 21:09) [26]


> Опять я   (09.09.12 20:58) [22]

В школе бывал? Там учат делить без калькулятора.


 
Inovet ©   (2012-09-09 21:10) [27]

Почему нет на сложение столбиком? Непорядок, надо с простого начинать.


 
Давайте будем жрать!   (2012-09-09 21:26) [28]

вам лишь бы издеваться… деление в столбик какой-то…


 
Юрий Зотов ©   (2012-09-09 21:31) [29]


> Давайте будем жрать!   (09.09.12 21:26) [28]

Дружище, смени ник, а? Ну пожалуйста!
Я жрать хочу, а в доме только кофе, а выходить из дома влом. Представь, каково мне твой ник видеть?
:o)


 
Sha ©   (2012-09-09 21:34) [30]

вот-вот, он первый издевается


 
Anatoly Podgoretsky ©   (2012-09-09 21:46) [31]


> напечатать все цифры числа 3^512

Нормальная задача, непростая конечно, но нормальная.
Хотя постановка плохая, не сказано в каком виде, ведь

1,932334983228891510545406872202e+244

тоже все


 
Sha ©   (2012-09-09 21:54) [32]

> Anatoly Podgoretsky ©   (09.09.12 21:46) [31]

а так 1,9e+244 можно?


 
Inovet ©   (2012-09-09 21:54) [33]

> [31] Anatoly Podgoretsky ©   (09.09.12 21:46)
> ведь
>
> 1,932334983228891510545406872202e+244
>
> тоже все

Это другое число


 
Германн ©   (2012-09-09 21:56) [34]


> Inovet ©   (09.09.12 21:10) [27]
>
> Почему нет на сложение столбиком?

Зато и квадратного корня столбиком тоже нет. :)


 
Юрий Зотов ©   (2012-09-09 22:02) [35]

> Sha ©   (09.09.12 21:34) [30]

Хех, а я его обломил - заказал жратву на дом, через полчаса привезут.
Нам не страшен серый волк, серый волк, серый волк...
:o)


 
Inovet ©   (2012-09-09 22:21) [36]

> [35] Юрий Зотов ©   (09.09.12 22:02)
> заказал жратву на дом, через полчаса привезут.

Вот только б не писать стихи о пицце.:)


 
Anatoly Podgoretsky ©   (2012-09-09 22:43) [37]

> Inovet  (09.09.2012 22:21:36)  [36]

Стихами сыт не будешь.


 
брат Птибурдукова   (2012-09-09 23:03) [38]


> Юрий Зотов ©   (09.09.12 21:31) [29]
только из уважения к Вам, милейший…


> Зато и квадратного корня столбиком тоже нет. :)
да не... способ есть, дед в своё время учил такому. другое дело, что при теперешнем распространении калькуляторовпользоваться им нет надобности. http://ru.wikipedia.org/wiki/Квадратный_корень


 
брат Птибурдукова   (2012-09-09 23:07) [39]


> Вот только б не писать стихи о пицце.:)
та ну, пицца… я вон казан лагмана сготовил, миску умял — куда той пицце. научиться б ещё к лагману настоящую дунганскую лапшу делать… :-\


 
Германн ©   (2012-09-09 23:17) [40]


> да не... способ есть

Я знаю. Я про то что в задании этого нет. :)



Страницы: 1 2 вся ветка

Текущий архив: 2013.03.22;
Скачать: CL | DM;

Наверх




Память: 0.56 MB
Время: 0.074 c
2-1339691646
vasa777
2012-06-14 20:34
2013.03.22
заставка xe2 с текстом


15-1330503243
stas
2012-02-29 12:14
2013.03.22
Правильное использование батареи ноутбука


15-1339158733
oxffff
2012-06-08 16:32
2013.03.22
Производственный календарь. Если web сервис бесплатный?


15-1331018645
Unknown user
2012-03-06 11:24
2013.03.22
TStringList.AddObject добавление строки вместо TObject


2-1347989696
vegarulez
2012-09-18 21:34
2013.03.22
синхронизация потока.