トップページに戻る
次のProblemへ
前のProblemへ
Problem10 200万以下の全ての素数の和
10以下の素数の和は2 + 3 + 5 + 7 = 17である.
200万以下の全ての素数の和を計算しなさい.
SQL
declare
type NumArrDef is table of pls_Integer Index by binary_integer;
NumArr NumArrDef;
--MaxNum constant pls_Integer := 10;
MaxNum constant pls_Integer := 2000000;
J pls_Integer;
SumVal Number(38):=0;
begin
for I in 2..MaxNum Loop
NumArr(I) := I;
end Loop;
for I in 2..MaxNum Loop
if NumArr(I) != 0 then
J := I*2;
while (J <= MaxNum) Loop
NumArr(J) := 0;
J := J+I;
end Loop;
end if;
end Loop;
for I in 2..MaxNum Loop
if NumArr(I) != 0 then
SumVal := SumVal + I;
end if;
end Loop;
DBMS_Output.Put_Line('Answer=' || to_char(SumVal));
end;
/
実行結果
Answer=142913828922
解説
エラトステネスのふるいを使ってます。
C#での解