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

第6話 分数約分アプリ例

26370/23103=26370/23103
9で約分しました。


26242/29899
この分数は約分できません。

を実現するコード例
#include<stdio.h>
#include<stdlib.h>
#include <time.h>
void f(int a,int b); //aとbを交換する社員
int g(int a,int b); //ユークリッド互除法を行う社員
int main(){
  int a,b,c;
  srand(time(NULL)); //シード値を自動的に指定
  for(;;){
    a=rand()%20;
    b=rand()%20;
    a=a*(rand()%20);
    b=b*(rand()%20);
    a=a*(rand()%20);
    b=b*(rand()%20);
    if(a>0 && b>0){
      break;
    }
  }
  printf("a=%d b=%d\n",a,b);
  if(a<b)f(a,b);
  c=g(a,b);
  printf("aとbの最小公倍数は%dです。\n",a*b/g(a,b));
  return(0);
}
void f(int a,int b){
  int w;
  w=a;
  a=b;
  b=w;
}
int g(int a,int b){
  a=a%b;
  if(a==0){
    return(b);
  }
  return(g(b,a));
}
コピペ用添付ファイル


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

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




第5話へ 第7話へ

a


初心者のための excel 2016 マクロ VBA 入門講義 基礎から応用まで
vc++ c言語 c++ 入門 初心者 基礎から応用まで
eclipse c++ 入門
魔方陣 数独で学ぶ VBA 入門

数独のシンプルな解き方・簡単な解法の研究
VB講義へ
VB講義基礎へ
初心者のための世界で一番わかりやすいVisual C++入門基礎講座
初心者のための世界で一番わかりやすいVisual Basic入門基礎講座

初心者のための世界で一番わかりやすいVBA入門講義(基礎から応用まで)
初心者のための VC++による C言語 C++ 入門 基礎から応用まで第1部
eclipse java 入門
java 入門 サイト 基礎から応用まで
本サイトトップへ