第9講 ユークリッド互除法
第5話 ユークリッド互除法を利用した約分判定と約分実行
ユークリッド互除法を利用した約分判定と約分実行プログラム例
#! 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つかけたものとする。
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部へ
本サイトトップへ