カテゴリー
数学 数学の問題をプログラムで解く

数学の問題をプログラムで

500以下の自然数のうち、正の約数が15個である数の個数と求めよ。

for i in range(1,501):
 k=0
 for j in range(1,i+1):
  if i % j ==0:
   k=k+1
 if k==15:
   print(i)
——————————
144
324
400

答えは3個です。プログラムを使えばこんなに簡単に解けます。
しかしきっと数学の先生は怒るから真面目に解きましょう。
積が15になる自然数の組み合わせは1×15と3×5です。
よって約数が15個である数を素因数分解すると
p1-1q15-1=q14またはp3-1q5-1=p2q4の形です。
ただしp,qは素数でp≠q
q14≦500 またはp2q4≦500となるp,qを求めましょう。
q14≦500となるqはありません。

prime=[2,3,5,7,11]
 for p in prime:
  for q in prime:
   if p**2*q**4<=500 and p!=q:
   print(p,q,p**2*q**4)
——————————————
2 3 324
3 2 144
5 2 400


カテゴリー
数学 数学の問題をプログラムで解く

累乗が入った漸化式

a1=1, an+1=3an – 2n という漸化式を解け。
累乗が入った漸化式はknを掛けたり割ったりすることで単純な漸化式になることが多い。
両辺を2n+1で割ると
an+1/2n+1 = 3an/(2・2n) – 1/2
ここでbn=an/2nとおくと、
bn+1 = 3bn/2 – 1/2
2bn+1 = 3bn – 1
bn = -(3/2)n/3+1
an = 2nbn = 2n – 3n-1

漸化式から一般項を求めるのはとても難しい。
しかし、実際こんな必要があるのだろうか?
コンピュータを使えば漸化式から簡単に値を求めることができる。
Excelで計算した例であるが、セルC1にa1の値を入れてc2に漸化式の式 [=3*C3-2^B3]を入れて下にコピーするだけで計算できる。
どんな難しい漸化式でも大丈夫。

これで良いのではないか?

カテゴリー
Python 数学の問題をプログラムで解く

余りを求める問題

20232023を11で割った余りはいくらか?
2023を11で割ると余りが1になる。
20232023=(20232)1011✕2023≡2023≡10 (mod 11)
よって余りは10である。
しかしプログラムを使えば1行で答えが求まる。
print(2023**2023%11)

カテゴリー
Python Scratch 数学の問題をプログラムで解く

フェルマー数

Fn=22^n+1 (nは自然数, 2^nは2n
F0=3
F1=5
F2=17
F3=257
F4=65537
F0からF4はすべて素数です。
フェルマーはF5=4294967297も素数だろうと予想しました。フェルマーから約百年後、1732年にオイラーはフェルマーの予想が誤りであったことを示しました。

F5が素数でないことは簡単に示せます。

F6はScratchでは難しいのでPythonで解きました。

Pythonだと簡単に素因数分解できました。これでF6は素数でないことが分かります。
フェルマーの予想から百年後にオイラーがF5が誤りであることを示しましたがそれから150年近くたった1880年にランドリーによって素因数分解されました。驚くことに80歳を過ぎてからの大発見だったそうです。
その後コンピュータを使ってF7,F8,F11が素因数分解できることが解き明かされています。

この記事は「面白くて眠れなくなる数学」桜井進著を参考にしました。
余談ですが、F7の値が初版では間違っていました。

カテゴリー
Scratch 数学の問題をプログラムで解く

高校入試の問題をプログラムで解く

私立の高校入試の問題はどんどん難しくなっている。
理大付属高校の入試問題にこのようなものがありました。
問題 図のように奇数を順番に規則的に並べていくと191は何段目の右から何番目にあるか?
1段 1
2段 3 5 7
3段 9 11 13 15 17
4段 19 21 ・ ・ ・ ・ ・
解答  右から何番目からというので各段の右端の数字を並べてみると 1,7,17,31,・・・と続く。高校生だとこれは階差数列だと分かり、一般項を求める。→ 2n2-1
これが191を超えるのはn=10の時で10段の右端が199だと分る。
10段 ・・・191,193,195,197,199
よって答えは10段の右端から5番目だと分かる。
しかし、受験生が階差数列を解けるとは思えない。どやって解くことを出題者は期待しているのだろう。
プログラムを使えば簡単に解くことができる。

カテゴリー
数学の問題をプログラムで解く

愛の愛情はいくら?

数の不思議(今野紀雄著)に複素数についてこのような話がありました。
愛は虚数単位の i ことです。つまり iのi乗 ii がいくらかという問題です。 高校で虚数は習いますが、これがいくらかというのは難しい問題です。私はさっぱり分かりません。しかし、私には関数電卓があります。
早速求めてみました。

iiは0.2078…と分かります。
実際にはこの問題の解は
ii=e(2n-0.5)π となるそうです。n=0とすると
ii=e-0.5π=0.2078…
答えは一致します。
スマホの関数電卓は手放せません。



カテゴリー
数学の問題をプログラムで解く

高1の数学の問題

5個の数字0 1 2 3 4を使って5桁の整数を作る時 (1)小さい順に並べた時、40番目の数は何か? (2)32104は何番目の数か?
よく出る問題のようで検索するとすぐに見つかる。
いつものようにプログラミングで解いてみようと思う。
この5桁の数字を小さい順に並べたものを出力するプログラムは簡単だし、瞬時に求めることができる。

 40番目の数は23140      32104は62番目 

5桁の数字をすべて出力するプログラム

プログラムはとても簡単で美しい。

カテゴリー
数学の問題をプログラムで解く

電卓プログラムを作ろう

子供の夏休みの作品として電卓のプログラムはどうでしょう?
親子で作る電卓のプログラミング教室を開催しょうかと思っています。
まずは四則演算ができる基本的な電卓を作ってそれを発展させていきます。
・数式電卓 例えば3+4✕5と入力したら23と計算してくれる電卓です。
・関数電卓 三角関数やLOGなどの計算もできる電卓です。
・音声入力電卓 数式を声で言うと言葉で教えてくれる電卓です。
このような楽しく実用的な電卓を作ろうと思っています。
数式電卓を作ろうとすれば逆ポーランド記法というのが出てきます。
この作り方が簡単に分かるプログラムを作ってみました。

カテゴリー
共通テスト 数学の問題をプログラムで解く

不定方程式を解く

共通テスト2022 数学Ⅰ・数学A 第4問 (4)
114を24で割ったときの余りは1に等しい。不定方程式
   115x-25y = 1
の整数解のうち、xが正の整数で最小になるのは
   x=【テト】、y=【ナニヌネノ】
である。
数学的に不定方程式の問題を解くのはなかなか難しいのですがプログラミングを使えば一瞬で解けます。
Pythonのプログラム
————————————
for x in range(10,100):
 for y in range(90000,100000):
  if(11**5-2**5*y==1):
   print(‘x=’,x,’ y=’,y)
————————————-
x= 19 y= 95624
この難問も5行のプログラムで解けます。



カテゴリー
数学の問題をプログラムで解く

二項係数nCrの和の問題

次の□に入る数字を二項定理を用いて求めよ。
101C0 + 101C2 + 101C4 + …+101C98 + 101C100=2

この問題を解いているホームページがありました。

エレガントな解法です。
私はExcelで解いてみました。グラフ表示をすれば100だと分かりました。

inserted by FC2 system