【QBASIC互換!?】FreeBasic【GPL】 2 [無断転載禁止]©2ch.net (430レス)
前次1-
抽出解除 必死チェッカー(本家) (べ) 自ID レス栞 あぼーん

24
(2): デフォルトの名無しさん [sage] 2017/01/28(土) 08:41:05.20 ID:fbuNIeJW(1/6) AAS
>>23
23(4): デフォルトの名無しさん [] 2017/01/27(金) 20:21:16.13 ID:tSNcnN0K(1) AAS
>>21-22 よくわかんないけと゛、Type 命令文関係を見てみます。

虚数演算と同じファイルに放り込んでおいたのが、整数演算。
'外部リンク[htm]:rucio.a.la9.jp
で見つけた内容をコピーしただけのルーチン(何やっているのかわからなかった)がいくつか。
で、問題は
Function LCM(ParamArray Values() As Variant) As Long
の「ParamArray 」、の部分。これに対応できるらしい命令が
Function Overload 系処理。
外部リンク[html]:makoto-watanabe.main.jp
外部リンク[html]:makoto-watanabe.main.jp

Declare Function AAAA OverLoad (InA1 As Long, InA2 As Long, InA3 As Long) As Long
Declare Function AAAA OverLoad (InA1 As Long, InA2 As Long) As Long
Declare Function AAAA(InA() As Long) As Long

と、OverLoad 句のついている Declare を先に、ついていないDeclare文を後ろにと、並べないとエラーになる。
間に別の名称の文を入れても解釈してくれるみたい。
Declare Function AAAA OverLoad (InA1 As Long, InA2 As Long, InA3 As Long) As Long
Declare Function AAAA OverLoad (InA1 As Long, InA2 As Long) As Long
Declare Function BBBB(InA() As Long) As Long
Declare Function AAAA(InA() As Long) As Long
独自に定義した関数をオーバーロードする設計なら「全て」の同名関数にoverloadは付けるべき
複数のヘッダファイルに同名関数のオーバーロード宣言を書いた時
インクルード次第で多重定義のエラーになる可能性がある
更にその関数にはオーバーロードされた関数が別に存在することが分かる

>内容をコピーしただけのルーチン(何やっているのかわからなかった)がいくつか。
褒められたものじゃないなあ
最小公倍数のアルゴリズム位は理解しておこうよ
26
(2): デフォルトの名無しさん [sage] 2017/01/28(土) 13:46:02.65 ID:fbuNIeJW(2/6) AAS
>>25
25(2): デフォルトの名無しさん [] 2017/01/28(土) 10:58:26.28 ID:8XnTGJGH(1/2) AAS
>>24 最小公倍数、最大公約数を求めることはできるのだが
外部リンク[html]:ameblo.jp
に示された方法が理解できない。
覚えている方法は、素数表と簡易除算
外部リンク[html]:ameblo.jp
を覚えて、出題範囲の関係で 11,13,17,19 の2乗を覚えて
手計算でやる方法しか理解できない。こんな感じ
  12 24
2   6 12
2   3  6
3   1  3
区切り線は略。
縦に 2*2*3 = 12 が最大公約数
さらに横をかけて、2*2*3*1*3 = 36 が最小公倍数
素数表がなくて、役数を積んでないので、わからない。
なお、自作した多倍精度ルーチンでは、約数と残りをもとめて、作ったけど
既約か可約かの判断に1000桁ぐらいの数で1回5秒ぐらいかかる。
高速化したいがこれもわからないでいる。
整数a, bの最小公倍数をLCM(a, b)とし、最大公約数をGCD(a, b)すると
整数a, bの最大公約数と最大公倍数の積が整数a, bの積に等しいという定理から
LCM(a, b) = a * b / GCD(a, b)
となる
>>23のリンク先の関数は、n個の整数の最大公倍数LCM(n1 , n2 ...) を求める関数
単に上記をn個分ループしているだけ

上記の定理の証明が知りたいならググってくれ、幾らでも見つかる
27
(1): デフォルトの名無しさん [sage] 2017/01/28(土) 13:49:00.02 ID:fbuNIeJW(3/6) AAS
>>25
最大公約数は「ユークリッドの互除法」でもググってくれ
28: デフォルトの名無しさん [sage] 2017/01/28(土) 13:53:54.95 ID:fbuNIeJW(4/6) AAS
>>26
ありゃ記述間違えてるわ

>n個の整数の最大公倍数LCM(n1 , n2 ...) を求める関数
n個の整数の最小公倍数LCM(n1 , n2 ...) を求める関数

こうね
30
(1): デフォルトの名無しさん [sage] 2017/01/28(土) 20:03:50.77 ID:fbuNIeJW(5/6) AAS
>>29
29(1): デフォルトの名無しさん [] 2017/01/28(土) 18:42:25.36 ID:8XnTGJGH(2/2) AAS
>>27 最大公約数は「ユークリッドの互除法」
なら、わからない理由が分かった。
「ユークリッドの互除法」を高校1年目にやったんだけど、何が何だかわからない。
んで、他の教科もわからなくなって、高校中退したんだわ。

高校中退の原因の一つが「ユークリッドの互除法」。今は昔。
整数問題がよくわからなくて、結局、公式を使わないで定理から力技で無理やり計算する日々。
えっと、プログラマに求められるのは「何故そうするのか?」ではなく
「それをどのようにするのか?」であるわけよ

>>24でアルゴリズム位は理解しておこうよって言ったのは
数学的証明や理論の理解ではなく、方法論の話
つまり端的に言うなら、検索、実装、検証が出来ればコードは書けるのよ
勿論、そこに「何故そうするのか?」と考証が入るのが良いけれども

で、最小公倍数や最大公約数を実装するに辺り、目の前の便利な箱を使うわけだよ
そうしたらユークリッドの互除法なんて真っ先に辿り着く情報でしょ
その実装なんてちょっとした頭の体操程度の物で
悩むにしても再帰処理にするかループ処理にするか位でしょ
ユークリッドの互除法は単なる除算(剰余)の繰り返しだよ?
modとwhileか、modとifがあれば実装できるんだよ
複雑な公式を使うことなんて無いんだよ

プログラミングは、数学的証明をしているわけじゃないんだよ
実際に動作する組み合わせをするだけで、その大前提である検索をして実装方法を吟味しなさいよ
他人のコードをコピペしてるだけじゃプログラミングは上手くならんよ

学歴云々の前に、検索しない事に真剣にびっくりだわ
31: デフォルトの名無しさん [sage] 2017/01/28(土) 20:14:38.98 ID:fbuNIeJW(6/6) AAS
>>26
>整数a, bの最大公約数と最大公倍数の積が整数a, bの積に等しいという定理から
いかんな、ここも記述間違えているわ

整数a, bの最大公約数と最小公倍数の積が整数a, bの積に等しいという定理から
こうね
前次1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 1.468s*