最小公倍数・最小公約数についておしえてください。
Posted: 2011年4月21日(木) 16:22
最大公約数(GCD),最小公倍数(LCM)を求めるプログラムを作成しようとしています。
最終的な最大公約数が求まるまでの途中過程を表示をしたいのですが、実行すると途中経過がうまく表示されていないようです。
改善点をおしえてください。
#include <stdio.h>
int gcd(int,int);
int main()
{
int m,n,g,l;
printf("m,nの最大公数約,最小公倍数を求めます\n");
printf("mとnを整数で入力してください。\n");
printf("m=");
scanf("%d",&m);
printf("n=");
scanf("%d",&n);
if(m<=0||n<=0)
printf("再入力してください。\n");
g=gcd(m,n);
l=(m*n)/gcd(m,n);
printf("GCD=%d\n",g);
printf("LCM=%d\n",l);
}
int gcd(int x,int y)
{
int r;
while (x>0&&y>0)
{
r=x%y;
x=y;
y=r;
printf("(m,n)=(%d,%d)\n",x,y);
}
return x;
}
最終的な最大公約数が求まるまでの途中過程を表示をしたいのですが、実行すると途中経過がうまく表示されていないようです。
改善点をおしえてください。
#include <stdio.h>
int gcd(int,int);
int main()
{
int m,n,g,l;
printf("m,nの最大公数約,最小公倍数を求めます\n");
printf("mとnを整数で入力してください。\n");
printf("m=");
scanf("%d",&m);
printf("n=");
scanf("%d",&n);
if(m<=0||n<=0)
printf("再入力してください。\n");
g=gcd(m,n);
l=(m*n)/gcd(m,n);
printf("GCD=%d\n",g);
printf("LCM=%d\n",l);
}
int gcd(int x,int y)
{
int r;
while (x>0&&y>0)
{
r=x%y;
x=y;
y=r;
printf("(m,n)=(%d,%d)\n",x,y);
}
return x;
}