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

Вниз

что не так в этой задаче   Найти похожие ветки 

 
Fors   (2003-01-10 13:51) [0]

Мастера подскажите, что не так в этой задаче. Дано натуральное число N. Можно ли его представить в виде суммы квадратов трех натуральных чисел?
ReadLn(N);
for i:= 1 to N-2 do
for j:=i to N-2 do
for k:=j to N-2 do
if (Sqr(i)+Sqr(j)+Sqr(k))=N then
WriteLn("yes")
else
WriteLn("no");
ReadLn
Результат какая та чепухаю Множество нет, нет, нет.......


 
MBo ©   (2003-01-10 14:01) [1]

модификация этого же примитивного метода
procedure TForm1.Button1Click(Sender: TObject);
var i,j,k,n,amax:integer;
begin
for n:=3 to 50 do begin
amax:=trunc(sqrt(n-1));
for i:=1 to amax do
for j:=i to amax do
for k:=j to amax do
if sqr(i)+sqr(j)+sqr(k)=n then
memo1.lines.add(format("%d: %d %d %d",[n,i,j,k]));
end;


 
Slayer   (2003-01-10 14:02) [2]

Нафига стока циклов? У меня вот так работает.
var
n, i: integer;
f: boolean;
begin
f:= False;
n:= StrToInt(Edit1.Text);
for i:= 1 to n do
if n = (sqr(i)+sqr(i)+sqr(i)) then
f:= True;
if f = True then
showmessage("Yes")
else
showmessage("No");
end;


 
Alx2 ©   (2003-01-10 14:14) [3]

>Slayer (10.01.03 14:02)
То, что у тебя написано вообще не требует цмклов.
Result := Frac(sqrt(n/3))<1E-10;


 
Alx2 ©   (2003-01-10 14:16) [4]

>Slayer (10.01.03 14:02)
Нагнал. Сорри :)
Но твой алгоритм не решает поставленную задачу


 
Slayer   (2003-01-10 14:20) [5]

Я непонял, чего ты нагнал, ведь то что ты паписал работает.
А почему мой не решает, ведь у меня тоже все работает.


 
Fors   (2003-01-10 14:23) [6]

Да но эту задачу надо решить способом вложенных циклов


 
Alx2 ©   (2003-01-10 14:24) [7]

>Slayer (10.01.03 14:20)
Нагнал с критерием целостности Frac(a)=0 => a - целое. Но в моем примере этот вариант не всегда будет корректен (можно подобрать такое n, что Frac(sqrt(n/3))<1E-10 но sqrt(n/3) - не целое (машинный нуль, едрить его:))
>почему мой не решает, ведь у меня тоже все работает.
Твой вариант пытается разложить в сумму трех одинаковых квадратов. А квадраты не обязаны быть одинаковыми


 
Slayer   (2003-01-10 14:26) [8]

А, птьфу блин, я и не заметил, что числа то разные, извеняюсь.


 
Alx2 ©   (2003-01-10 14:27) [9]

>Fors (10.01.03 14:23
MBo уже все написал (10.01.03 14:01)


 
Slayer   (2003-01-10 14:29) [10]

Ну дык тагда прога Fors"a работает, просто надо убрать из цикла вывод "да" или "нет", а сделать её за циклами, а в цикл вделать переменную булеан, и если условие выполняестся, присваевать её значение True, циклы прерывать, а потом выводить "да" или "нет".


 
Fors   (2003-01-10 15:06) [11]

Все ок ребята работает. Спасибо!!!!!



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

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

Наверх




Память: 0.49 MB
Время: 0.011 c
14-62732
Cobalt
2002-12-23 23:51
2003.01.20
Об удалении


3-62377
leonon
2002-12-24 16:03
2003.01.20
Работа с базой по сети


4-62931
supergreen
2002-12-04 15:43
2003.01.20
Нужно замаскировать одну нехорошую прогу


3-62374
Roman__M
2002-12-24 15:57
2003.01.20
Построение отчета с помощью QuickReport


3-62389
Kudatsky
2002-12-25 12:08
2003.01.20
Numeric-поле