最小公倍数を求めるプログラムが実行中に止まる
Posted: 2013年8月11日(日) 12:21
(最小公倍数)=(2数の積)/(最大公約数)
を利用して、x、y~y+9の最小公倍数を求めるプログラムを作ろうと試みました。
実行はできるのですが、xとyの値を入力したところでプログラムが固まってしまいます。
結果、最小公倍数を表示することができません。
スタックオーバーフローや、警告のメッセージにあったscanfを疑いましたが、原因はわかりませんでした。
もしよろしければ、ご教授お願いします。
を利用して、x、y~y+9の最小公倍数を求めるプログラムを作ろうと試みました。
実行はできるのですが、xとyの値を入力したところでプログラムが固まってしまいます。
結果、最小公倍数を表示することができません。
#include <stdio.h>
int GCD(int x, int y);//最大公約数を求める
int KEISAN(int x, int y);//最小公倍数に変換する
int main(){
int x,y,LCM_num;
puts("xの値を入力");
scanf("%d",&x);
puts("yの値を入力");
scanf("%d",&y);
LCM_num = KEISAN(x,y);
printf("%dと、%dから%dまでの最小公倍数は%dです",x,y,y+9,LCM_num);
return 0;
}
int GCD(int x, int y){
int r;
while((r = x%y) =! 0){//ユークリッドの互除法
x = y;
y = r;
}
return y;
}
int KEISAN(int x, int y){
int i;
for(i=y;i<y+10;y++){
y = i;
x = x*y / GCD(x,y);
}
return x;
}
もしよろしければ、ご教授お願いします。