我的思路不是很清晰。
#include<stdio.h>
void main()
{
int m, n, i, j, x, y, max;
printf("Please enter 2 numbers: \n");
scanf("%d %d", &m, &n);
if (m<n)
{
for (i = m, x = n%i; i > 0, x != 0; i--)//这里我是想用n来和较小的m来求比m小的一个能够被n整除的数
{
for (j = i, y = m%j; j > 0, y != 0; j--)//在这里再用上面求到的这个数和m来除,求得最大公约数
max = j;
}//但是跳出循环有问题啊,不能在我要求的情况下跳出循环
}
else
{
for (i = n, x = m%i; i > 0, x != 0; i--)
{
for (j = i, y = n%j; j > 0, y != 0; j--)
max = j;
}//
}
printf("这2个数的最大公约数是:%d\n", max);
}
这里只做了最大公约数的部分,大家帮忙看看,帮我重新写一个来借鉴一下也可以,谢谢了
----------------解决方案--------------------------------------------------------
路过,顶上
----------------解决方案--------------------------------------------------------
算法一(辗转相除):
f1(x,y)
{
a=x;b=y;
t=a%b;
if(t!=0)
{
a=b;b=t;t=a%b;
}
printf("%d\n",b); /*最大公约数*/
printf("%d\n",x*y/b); /*最小公倍数*/
}
算法二(辗转相减):
f2(x,y)
{
a=x;b=y;
while(a!=b)
{
if(a>b)
a=a-b;
else
b=b-a;
}
printf("%d\n",a); /*最大公约数*/
printf("%d\n",x*y/a); /*最小公倍数*/
}
这是我看别人写的一个程序,但其中数学运算思想我不是很懂..
----------------解决方案--------------------------------------------------------
这是我写的,最小公倍数的程序代码...
新手,请指教...
#include<stdio.h>
main()
{ int a,b,c,i,j;
printf("please input two number\n");
scanf("%d%d",&a,&b);
if(a-b>0)
c=a;
else
c=b;
for(i=c;i<1000;i++)
{
if(i%a==0 && i%b==0)
{
j=i;
printf("gong bei shu is%d\n",j);
break;
}
}
};
----------------解决方案--------------------------------------------------------
#include<stdio.h>
main()
{ int a,b,c,flag;
printf("please input two number\n");
scanf("%d%d",&a,&b);
if(a-b>0)
c=a;
else
c=b;
while(flag)
{
if(c%a==0 && c%b==0)
{
flag=0;
printf("gong bei shu is:%d\n",c);
}
else
c++;
}
}
给楼上的改了一下...
----------------解决方案--------------------------------------------------------
三楼有个小错误 应当是 else a=b-a; 吧
----------------解决方案--------------------------------------------------------
三楼的算法是纯数学的 数学学的不好不太明白原理 但你拿几个数试试就明白个大概了
----------------解决方案--------------------------------------------------------