ピタゴラス数
ピタゴラス数とは
2乗するとひとつが他の2つの2乗の和になるような
3つの自然数の組のことです。
式で表すと
a^2 + b^2 = c^2
です。
このピタゴラス数をVBAで求めたいと思います。
プログラム的に求めようと思います。
プログラム的とはどういうことかというと
For文で手当たり次第に条件に合うかどうか
確かめていくということです。
さきほどの式のように変数a、bを作ります。
この2つの変数a、bを使ってFor文を1つ入れ子にします。
入れ子にしたほうのFor文の中で
ピタゴラス数であるかの条件判定(If文)をします。
条件は次のようにしました。
Int(Sqr(a^2 + b^2)) = Sqr(a^2 + b^2)
Sqr関数は引数の平方根を返します。
上の条件は、
(a^2 + b^2)の平方根が整数であるときTrueとなり
ピタゴラス数と判断します。
結果はイミディエイトウィンドウに出力します。
コードはこちら
Sub macro110501a() Dim a As Integer, b As Integer, c As Integer |
実行後のイミディエイトウィンドウの一部:
ピタゴラス数を求めるとか言う程のプログラムではないですね。
Sqr関数に頼りきっています。
ということで、
このままでもつまらないので
Sqr関数を使わないで平方根を求めてみます。
数学の問題を解くときに
手で計算して無理数の大体の値を求めるときに使う手法で
平方根を近似してみます。
ルート2とかルート3は暗記しているけれど
ルート7までは覚えていないことが多いのではないでしょうか。
そういうときに
手で計算して平方根の大体の値を求めたいことがあります。
ルート7の場合の手順は次のようです。
4 < 7 < 9
2^2 < 7 < 3^2
2 < ルート7 < 3
ですのでルート7は2より大きく3より小さい値です。
次に小数点第一位を求めます。
小さいほうからルート7に近づいていくようにします。
2.1^2
2.2^2
2.3^2
…
2.9^2
のように順番に7(ルート7の2乗)と比較します。
比較して7よりも大きくなったら
1つ前の値を小数点第一位にします。
このようにして求めると、ルート7の小数点第一位は6です。
小数点第二位も同様にして求めます。
2.61^2
2.62^2
2.63^2
…
2.69^2
のように順番に7と比較します。同じように任意の小数点の位まで求めます。
変数pが小数点が第何位かをあらわします。
下のコードの
If p <= -5 Then
の箇所で小数第何位まで求めるかを決めます。
いまは小数第五位までになっています。
結果はイミディエイトウィンドウに出力します。
コードはこちら
Sub macro110501b() Dim x As Integer GoTo Step2: |
実行後のイミディエイトウィンドウ:
上の値が上のコードで求めたルート7、
下がSqr関数で求めたルート7です。
| 固定リンク
この記事へのコメントは終了しました。

コメント