スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。


--/--/--(--)/--:--:--:コメント(-)|トラックバック(-)

ユークリッドの法則をプログラム化してみる


前回、ユーグリッドの法則について説明しましたが。
前回の記事


実際、日常で使うならめんどくさいし(ヾノ・∀・`)

自分でもそう思います。

流れさえイメージできてれば、簡単にプログラムができます。

10分くらいで適当に組んだので、
ミスとか、一定の入力を考慮してないことがありまえますが、
まぁ、大体の流れをつかんでいただければ、いいと思います。

ユークリッドの互除法をプログラムにしてみよう! (C言語編)


ではまず、プログラムソース。

あ、ちなみに、私のC言語知識はカスレベル。
基本文を若干知っている程度です。

絶対、こうすればもっといい!って方法があると思いますよ。
今回のは、イメージをつかむためのプログラムと思ってみてください。
(似たようなことをさっきも書いて、これが二回目…つまりそういう意味です)


#include<stdio.h>
int main(){

int a,b,c,d,e;
printf("First number\n");
scanf("%d",&a);
printf("Second number\n");
scanf("%d",&b);

if(a==b){printf("%d \n",a); return 0;}…①
if(a>b){c=a;d=b;}else{c=b;d=a;}…②

while(1){
e=c%d;
if(e==0){printf("%d",d);return 0;}
c=d;d=e;
}
return 0;
}



ちょっと、見にくいかもしれませんが、ご勘弁を。

まず最初に、数字を2つ入力させます。
ちなみに、プログラムに2バイト文字嫌いなので、
それっぽい英単語を並べてます。

今回は、
1つ目の数字。2つめの数字。
と、とらえてください。

①の部分は、
入力した数が同じだったら、その数がすでに最大公約数なので、
その数を表示して、プログラムを終了。

②の部分は、重要です。
割る際は、大きい数を小さい数で割るので、
大きい方をc、
小さい方をd
と、この時点でc>bを確立しておきます。

最後にwhile(1)の部分。
入力した数を割る→余りを出す。
もし、余りが0なら、その時の割る数を出力して、プログラムを終了。

もし違うなら、
割る数を割られる数に、余りを割る数にして、while(1)の頭に戻る。

こうすれば、最大公約数が出るまで、永遠に繰り返され、
出たら表示して終了します。

ちなみに、while(1)の考え方は、前回の記事のユークリッドの互除法の考え方を参考に

単純に、自分で使うくらいなら、これで十分でしょうね。




相変わらず、裏の話。

実はプログラム作るのにかかった時間は5分くらい。
一応起動するのだけは確認したかったから、
テスト動作したけど、なぜかエラーが出て使えない……

なぜだ!なぜだ!
とか叫ぶこと数分……
あ…if(e = 0)になってる……修正修正……

まだ起動しないな……

さらに数分……
if( a=b )……またif文ですかね……

ということで、変なミスで5分ぐらい使ってしまいました。
2011/05/18(水)/09:31:57:コメント(0)|トラックバック(0)
コメントの際の注意。
・宣伝・同じ内容の連投は削除等の対象。
・質問等は、しっかり考えてから行ってください。
 聞けば何でも教えてくれるというのは間違いです。
・コメントの返信方法が確立していないので、返せない場合があります(´・ω・`)
・http://とhttps://が禁止ワードとなっています。
 コメント本文のURL入力は頭のhを抜くなり、なんなりしてください
name:

title:

Mail_address:

URL:

comment:

パスワード:

管理者にだけ表示を許可する
トラックバックURL

プロフィール

猫と馬

Author:猫と馬
相互リンク希望の方はこちらにコメしてください
閲覧推奨環境
現在不明

フリーエリア

blogram投票ボタン
fc2ブログランキング 人気ブログランキングへ

↑から買い物をしてくれると管理人が喜びます

カテゴリ

リンク

月別アーカイブ

リンク・記事の紹介(引用)について。
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。