トップページに戻る
次のProblemへ
前のProblemへ
Problem9 a+b+c=1000となるピタゴラス数
ピタゴラスの3つ組(ピタゴラスの定理を満たす自然数)とはa<b<cで
a*a + b*b = c*c を満たす数の組である
例えば 3*3+4*4 = 9+16 = 25 = 5*5である
a+b+c=1000となるピタゴラスの3つ組が1つだけ存在する。このa,b,cの積を計算しなさい
SQL
--■■■PL/SQLを使う方法■■■
declare
WillOut VarChar2(100);
C pls_Integer;
begin
for A in 1..1000 Loop
for B in A..1000 Loop
C := 1000-A-B;
if A*A+B*B=C*C then
WillOut := to_char(A) || '*' || to_char(A) || '+'
|| to_char(B) || '*' || to_char(B) || '='
|| to_char(C) || '*' || to_char(C) || '='
|| to_char(C*C);
DBMS_Output.Put_Line(WillOut);
end if;
end Loop;
end Loop;
end;
/
--■■■SQLで解く方法■■■
with tmp as(
select soeji as Val
from dual
model
dimension by(1 as soeji)
measures(0 as dummy)
rules(dummy[for soeji from 1 to 1000 increment 1]= 0))
select a.Val as aVal,b.Val as bVal,c.Val as cVal
from tmp a,tmp b,tmp c
where a.Val+b.Val+c.Val = 1000
and a.Val*a.Val+b.Val*b.Val = c.Val*c.Val
and a.Val <= b.Val
and b.Val <= c.Val;
実行結果
200*200+375*375=425*425=180625
解説
SQLで解く方法もあります。
C#での解