なんだか作る気力がないんですよね…。
流石にいつかはlord of warはupしないとあれだとは思いますが^^;
まぁ、そんなわけで作る気力がないのでここは適当に数学の問題が載ることになりそうですw
趣味程度なのでそんなに難しくはありません^^;;
…と言いたいですが過去に作った問題は容赦なく難しい(制限時間1日とかw)問題があるので保障は出来ません^^;;
とりあえず第一回です^^
答えは一週間くらい後に書こうかな?
もしかしたら忘れてるかもしれませんがwww
個人的に整数関係の問題は好きなのでそこから3問です。
ノルマタイムは上級と下級で分けます^^;(気分ですw)
問1(数列、制限時間…上級:3分、下級:30分)
A(n)は数列Aの第n項とする。
A(1)=√2
A(n+1)=√(2+A(n)) (n=2,3,4,…)
という数列Aがある。
数列Aは収束するかどうか調べ収束するならそれを証明せよ。
収束するなら収束値を予測し、収束することを示せ。
(収束することだけ示せばいいです。場合によっては収束値に収束することを示すのは難しいので…)
問2(BASIC、上級:2分、下級:15分)
一番単純な素数判定プログラムとして以下のようなプログラムを組んだ。
x番目の素数を見つけるプログラム。(x≧2)
10 input x
20 n=2
30 m=2
40 i=2
50 if n=int(n/i)*i then goto 90
60 if i <int(sqr(n)+1) then let i=i+1 goto 50
80 m=m+1
90 n=n+1
100 goto 40
110 print x;"番目の素数は";n
end
(60行目の不等号の前後の空白はプログラム的に不必要ですがblog表示的に必要でした…)
BASICやってない人に向けて最低限の解説
input x:xに値を入力(自分で数字を決めて代入できるってことです)
n=n+1:右辺の式の値を左辺の変数に入れる
例n=2でn=n+1とあったら…右辺に2を入れると右辺は3、 よってn=3が代入される。
if ~ then goto ~:ifの後の条件が成立していたらthen以下のことを行う
let ~:~をする
goto ~:~行へ移動する
print:表示させる
問題…このプログラムを改良しn=3,m=3,i=3,そして60行目のi=i+1をi=i+2、90行目のn=n+1をn=n+2とした。
これによってこのプログラムは何番目以降の素数を発見できるようになったか?
また、このプログラムでの計算時間は改良前の半分以下であることを示せ。
補足
これ書いてる私のPCはCore i7 920です。
1000万番目の素数をこの改良後のプログラムで発見させようとしたら28時間半近くかかりました。
ちなみに結果は…1億台という予想より低い結果でした^^;
問3(数列,これは難しいです。制限時間…上級:1時間、下級:何日でも)
問1と同様A(n)は数列Aの第n項とする。
A(n)=10^n-1(10のn乗-1)
つまり数列Aは…9 99 999 9999 99999…という数列である。
このとき数列BをB(n)=A(1)×A(2)×…×A(n)として定める。
(1)
このとき2,5以外の素数pは必ずB(p)の約数であることを証明せよ。
(2)以下の数をnとしたときB(n)の約数になっているかどうか判別せよ。
(i)2010
(ii)2047
(iii)65537
以上です。
以下ヒント
問1
これは単純な高校レベルの問題です。
数式変形で出せる人は出せるでしょうけど無理ならA(3)くらいまで近似値を出しても良いかもしれません。
A(1)=1とかで考えると良いでしょう。
問2
これはnを徐々に大きくして小さい数(i)から割れるかどうかを確かめ、素数ならカウント(m)に1加算してxに到達するまでnを大きくして続ける…というプログラムです。
改良前はn=2,3,4,5,…、i=2,3,4,5…としていましたが改良後はn=3,5,7,…、i=3,5,7…となってます。
問3
これは正直どこから手をつけていいかわからない人がほとんどだと思います…。
実はこれ…循環小数の問題なのですwww
(何で2,5を除くというのかというのはこれが関係しています。)
割る数をpにして、割られる数を割り切れないように定めると問題を解く糸口が見えるかも?
うーん…とりあえずヒントこれだけにしておきましょうか?
答えはいずれupします^^;
ではw
流石にいつかはlord of warはupしないとあれだとは思いますが^^;
まぁ、そんなわけで作る気力がないのでここは適当に数学の問題が載ることになりそうですw
趣味程度なのでそんなに難しくはありません^^;;
…と言いたいですが過去に作った問題は容赦なく難しい(制限時間1日とかw)問題があるので保障は出来ません^^;;
とりあえず第一回です^^
答えは一週間くらい後に書こうかな?
もしかしたら忘れてるかもしれませんがwww
個人的に整数関係の問題は好きなのでそこから3問です。
ノルマタイムは上級と下級で分けます^^;(気分ですw)
問1(数列、制限時間…上級:3分、下級:30分)
A(n)は数列Aの第n項とする。
A(1)=√2
A(n+1)=√(2+A(n)) (n=2,3,4,…)
という数列Aがある。
数列Aは収束するかどうか調べ収束するならそれを証明せよ。
収束するなら収束値を予測し、収束することを示せ。
(収束することだけ示せばいいです。場合によっては収束値に収束することを示すのは難しいので…)
問2(BASIC、上級:2分、下級:15分)
一番単純な素数判定プログラムとして以下のようなプログラムを組んだ。
x番目の素数を見つけるプログラム。(x≧2)
10 input x
20 n=2
30 m=2
40 i=2
50 if n=int(n/i)*i then goto 90
60 if i <int(sqr(n)+1) then let i=i+1 goto 50
80 m=m+1
90 n=n+1
100 goto 40
110 print x;"番目の素数は";n
end
(60行目の不等号の前後の空白はプログラム的に不必要ですがblog表示的に必要でした…)
BASICやってない人に向けて最低限の解説
input x:xに値を入力(自分で数字を決めて代入できるってことです)
n=n+1:右辺の式の値を左辺の変数に入れる
例n=2でn=n+1とあったら…右辺に2を入れると右辺は3、 よってn=3が代入される。
if ~ then goto ~:ifの後の条件が成立していたらthen以下のことを行う
let ~:~をする
goto ~:~行へ移動する
print:表示させる
問題…このプログラムを改良しn=3,m=3,i=3,そして60行目のi=i+1をi=i+2、90行目のn=n+1をn=n+2とした。
これによってこのプログラムは何番目以降の素数を発見できるようになったか?
また、このプログラムでの計算時間は改良前の半分以下であることを示せ。
補足
これ書いてる私のPCはCore i7 920です。
1000万番目の素数をこの改良後のプログラムで発見させようとしたら28時間半近くかかりました。
ちなみに結果は…1億台という予想より低い結果でした^^;
問3(数列,これは難しいです。制限時間…上級:1時間、下級:何日でも)
問1と同様A(n)は数列Aの第n項とする。
A(n)=10^n-1(10のn乗-1)
つまり数列Aは…9 99 999 9999 99999…という数列である。
このとき数列BをB(n)=A(1)×A(2)×…×A(n)として定める。
(1)
このとき2,5以外の素数pは必ずB(p)の約数であることを証明せよ。
(2)以下の数をnとしたときB(n)の約数になっているかどうか判別せよ。
(i)2010
(ii)2047
(iii)65537
以上です。
以下ヒント
問1
これは単純な高校レベルの問題です。
数式変形で出せる人は出せるでしょうけど無理ならA(3)くらいまで近似値を出しても良いかもしれません。
A(1)=1とかで考えると良いでしょう。
問2
これはnを徐々に大きくして小さい数(i)から割れるかどうかを確かめ、素数ならカウント(m)に1加算してxに到達するまでnを大きくして続ける…というプログラムです。
改良前はn=2,3,4,5,…、i=2,3,4,5…としていましたが改良後はn=3,5,7,…、i=3,5,7…となってます。
問3
これは正直どこから手をつけていいかわからない人がほとんどだと思います…。
実はこれ…循環小数の問題なのですwww
(何で2,5を除くというのかというのはこれが関係しています。)
割る数をpにして、割られる数を割り切れないように定めると問題を解く糸口が見えるかも?
うーん…とりあえずヒントこれだけにしておきましょうか?
答えはいずれupします^^;
ではw