2010-09-08 1154,2100,2101 あいづおんらいんじゃっぢ 1154 問題がわかりずらくて泣。理解力がなくて泣。 とりあえず月曜土曜数を生成しておいて、月曜土曜素数かどうかを判定する関数を用意した。 そして、毎回入力に対して、「月曜土曜数で割り切れて」かつ「その月曜土曜数が月曜土曜素数」の時、表示。 毎回計算しなおしてるからTLEかと思ったらそうでもなかった。 2100 やるだけ。「(今の数字)-(一個前の数字)」を配列にいれておいて、ソート。 2101 普通に約数の和を計算するとかなり時間がかかる。「約数関数σ(n)」で判別した。 整数nを因数分解して、n=(p1^a1)*(p2^a2)*...となったら、約数関数はσ(n)=σ(p1^a1)*σ(p2^a2)*...となる。 σ(p^a)=1+p+p^2+...+p^aなので、それで計算できる。 σ(n)<2nなら「不足数」。σ(n)>2nなら「過剰数」。σ(n)==2nなら「完全数」。