第9講 ユークリッド互除法

第5話 ユークリッド互除法を利用した約分判定と約分実行
0335
0785

ユークリッド互除法を利用した約分判定と約分実行プログラム例
#! ruby -Ks
def f(a,b)
 a=a%b;
 if a==0 then
  return b
 end
 f(b,a);
end
def g(a,b)
 if b>a then
  w=a
  a=b
  b=w
 end
end
for i in 0..10
 a=rand(1000)
 if a==0 then
  i-=1
 else
  break
 end
end
for i in 0..10
 b=rand(1000)
 if b==0 then
  i-=1
 else
  break
 end
end
c=a
d=b
g(c,d)
w=f(c,d)
if w>1 then
 print "分数",a,"/",b,"は約分できます。\n"
 print "分数結果は",a/w,"/",b/w,"です。\n"
else
 print "分数",a,"/",b,"は約分できません。\n"
end
参考ダウンロード添付ファイル

for i in 0..10
 a=rand(1000)
 if a==0 then
  i-=1
 else
  break
 end
end

for i in 0..0
 a=rand(1000)
 if a==0 then
  i-=1
 end
end
で良さそうなのですが、
実験してみるとaが0になる場合がありました。
それで仕方なく、
for i in 0..10
 a=rand(1000)
 if a==0 then
  i-=1
 else
  break
 end
end
としてあります。
ここは
while文を使うとエレガントに出来ます。
a=0
while a==0
 a=rand(1000)
end

while 条件式
 ・・・
 ・・・
end
は条件式が成り立っている場合、
ループを続けます。
ですから、
a=0
while a==0
 a=rand(1000)
end
はaが0の間は
 a=rand(1000)
を続けなさいと言う意味になります。

ユークリッド互除法を使うと、最小公倍数を求めることも出来ます。
aとbの最大公約数をG、最小公倍数をLとすると、
G×L=a×b
の関係があります。
ですから、最小公倍数Lを求めるには、
L=a×b÷G
ということになります。

最小公倍数を求めるプログラムを以下の条件下で組んで下さい。
@ 整数a、bは今回の約分プログラムと同様にランダムに発生させる。
A 任意に発生させるだけだと、
  ほとんどの場合互いに素(最大公約数が1)になってしまうので、
  aもbも100未満の整数を2つかけたものとする。
0688



第4話へ 第6話へ

004

eclipse c++ 入門
魔方陣 数独で学ぶ VBA 入門
数独のシンプルな解き方・簡単な解法の研究
vc++講義へ
vba 2013 2010 2007 入門へ
VB講義基礎へ
初心者のための世界で一番わかりやすいVisual C++入門基礎講座へ
初心者のための世界で一番わかりやすいVisual Basic入門基礎講座へ
専門用語なしの C言語 C++ 入門(Visual C++ 2010で学ぶ C言語 C++ 入門)
専門用語なしの excel vba マクロ 入門 2013 2010 2007 対応講義 第1部
eclipse java 入門へ
excel 2016 vba 入門第1部へ
本サイトトップへ