「プロジェクトオイラー問73」の編集履歴(バックアップ)一覧はこちら

プロジェクトオイラー問73」(2014/03/02 (日) 05:17:07) の最新版変更点

追加された行は緑色になります。

削除された行は赤色になります。

http://odz.sakura.ne.jp/projecteuler/index.php?cmd=read&page=Problem%2073 *Problem 73 「ある範囲内の分数の数え上げ」 † nとdを正の整数として, 分数 n/d を考えよう. n<d かつ HCF(n,d)=1 のとき, 真既約分数と呼ぶ. d ≤ 8 について既約分数を大きさ順に並べると, 以下を得る: 1/8, 1/7, 1/6, 1/5, 1/4, 2/7, 1/3, 3/8, 2/5, 3/7, 1/2, 4/7, 3/5, 5/8, 2/3, 5/7, 3/4, 4/5, 5/6, 6/7, 7/8 1/3と1/2の間には3つの分数が存在することが分かる. では, d ≤ 12,000 について真既約分数をソートした集合では, 1/3 と 1/2 の間に何個の分数があるか? 解法 とりあえずファレイ数列で全探索しました。 ちょっと遅いのでもう少し賢い方法がありそうです。 calc(_,DL,_,DR,_):- DL+DR>12000, !, fail. calc(_,_,_,_,1). calc(UL,DL,UR,DR,Result):- MU is UL+UR, ML is DL+DR, calc(UL,DL,MU,ML,Result). calc(UL,DL,UR,DR,Result):- MU is UL+UR, ML is DL+DR, calc(MU,ML,UR,DR,Result). main73:- findall(C,calc(1,2,1,3,C),Count), length(Count,Ans), write(Ans).

表示オプション

横に並べて表示:
変化行の前後のみ表示: