第11講 ユークリッド互除法
第9話 分数の足し算を求め約分できる場合には約分するアプリ例
実行画面
22/93+10/69=816/2139=272/713
31/90+80/87=3299/2610
を実現するコード例
#include<stdlib.h>
#include <time.h>
void f(int a,int b); //aとbを交換する社員
int g(int a,int b); //ユークリッド互除法を行う社員
int h(); //乱数を発生させる社員
int main(){
int a[14];
srand(time(NULL)); //シード値を自動的に指定
a[0]=h(); //a
a[1]=h(); //b
a[4]=a[0]; //aのバックアップ
a[5]=a[1]; //bのバックアップ
for(;;){
for(;;){
a[2]=h(); //c
a[3]=h(); //d
if(a[2]*a[3]>0)break;
}
a[6]=a[2]; //cのバックアップ
a[7]=a[3]; //dのバックアップ
if(a[2]<a[3])f(a[2],a[3]);
a[8]=g(a[2],a[3]);
if(a[8]>1)break;
}
printf("%d/%d+%d/%d=",a[4],a[6],a[5],a[7]);
a[9]=(a[6]/a[8])*a[7];
a[10]=a[4]*(a[9]/a[6])+a[5]*(a[9]/a[7]);
printf("%d/%d",a[10],a[9]);
a[11]=a[9];
a[12]=a[10];
if(a[11]>a[12])f(a[11],a[12]);
a[13]=g(a[11],a[12]);
if(a[13]>1){
printf("=%d/%d\n",a[10]/a[13],a[9]/a[13]);
}
else{
printf("\n");
}
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));
}
int h(){
return(rand()%100);
}
コピペ用添付ファイル
ユークリッド互除法は、結構面白いテーマだと思いませんか。
まだまだ、いろいろなマクロが組めそうですが、
それは、皆さんにお任せして、
第12講のFor文以外の繰り返し処理に進みたいと思います。
初心者のための excel 2016 マクロ VBA 入門講義 基礎から応用まで
vc++ c言語 c++ 入門 初心者 基礎から応用まで
eclipse c++ 入門
魔方陣 数独で学ぶ VBA 入門
数独のシンプルな解き方・簡単な解法の研究
VB講義へ
VB講義基礎へ
初心者のための世界で一番わかりやすいVisual C++入門基礎講座
初心者のための世界で一番わかりやすいVisual Basic入門基礎講座
初心者のための世界で一番わかりやすいVBA入門講義(基礎から応用まで)
初心者のための VC++による C言語 C++ 入門 基礎から応用まで第1部
eclipse java 入門
java 入門 サイト 基礎から応用まで
本サイトトップへ