|
これは最大公約数を求めるプログラムか。面白いですね。特にwhile文のところが。
普通、繰り返しの式を作るとき、インクリメントという変化式をつけるのが定石なんだけど、このプログラムにはそれがないです。
その代わり、xとyの値をどんどん変えていって、割り算の余りが0になったら繰り返し終了という感じになっています。
なるほど。このアルゴリズムならば確かに最大公約数が求まるではないか。サンプルとはいえ、こういうアイディアは勉強になります。
#include <stdio.h>
void gcmprint(int, int);
int gcm(int, int);
int main(void){
gcmprint(10, 5);
gcmprint(52, 16);
gcmprint(13, 19);
gcmprint(44, 22);
gcmprint(96, 33);
return 0;
}
void gcmprint(int x, int y){
printf("%d\tgcm\t%d\t=\t%d\n" ,x ,y ,gcm(x, y));
}
int gcm(int x, int y){
int z;
while((z = x % y) != 0){
x = y;
y = z;
}
return y;
}
|
|