主题:求最大公约数 我出错了!求高手帮忙
ws416464515
[专家分:0] 发布于 2010-05-03 12:29:00
输入两个数,求他们的最大公约数。我写的程序如下:
#include<stdio.h>
void main()
{
int n,m,max,min,t;
scanf("%d %d",&n,&m);
if(n>m) max=n,min=m;
else max=m,min=n;
while(t!=0)
{
t=max%min; \使用辗转相除\
max=min;
min=t;
}
printf("它们的最大公约数为%d\n",min);
}
输出不对 程序能运行 高人帮帮我,我刚刚学C 还是一个非常小白!
回复列表 (共20个回复)
11 楼
ws416464515 [专家分:0] 发布于 2010-05-04 19:49:00
我用你的试了一下 还是不行 输入 24 18 输出却是-4??????????
12 楼
ws416464515 [专家分:0] 发布于 2010-05-04 19:53:00
试了一下 可以 在你手里怎么变成那么简单啊
可以不互换???????要是计算机把不会把小的对大的求余?比如5%15???????? 第一次建你这么用 !不过很好
13 楼
caomang [专家分:150] 发布于 2010-05-04 19:59:00
[quote]哦,不好意思,我记错了,囧,这是我改过后的
#include<stdio.h>
void main()
{
int n,m,max,min,t=1;
scanf("%d %d",&n,&m);
if(n>m) max=n,min=m;
else max=m,min=n;
while(t>0)
{
t=max%min;
max=min;
if(t) min=t;
}
printf("它们的最大公约数为%d\n",min);
}
[em8][em8][em8][em8][em8][/quote]
if(n>m) max=n,min=m;
else max=m,min=n;这里的两个逗号的问题……
我先指出这点,小细节一定要注意,我刚刚学c的时候就在这里吃了很大的亏。
待会给你改程序
14 楼
caomang [专家分:150] 发布于 2010-05-04 20:02:00
已经有人改了,我就不献丑了
15 楼
彼岸之歌 [专家分:50] 发布于 2010-05-04 21:45:00
嗯,13楼指教的是,我会注意的
16 楼
彼岸之歌 [专家分:50] 发布于 2010-05-04 21:48:00
十楼程序改得很好,楼主分应该给他高一点的······像我改的,虽然可以用,但是还是有缺陷,也不够简洁···[em8]
17 楼
coolwater2008 [专家分:720] 发布于 2010-05-05 08:44:00
[quote]简化后的程序如下:
#include<stdio.h>
void main()
{
int n,m,t;
scanf("%d %d",&n,&m);
while(m!=0)
{
t=n%m; //使用辗转相除
n=m;
m=t;
}
printf("它们的最大公约数为%d\n",n);
}[/quote]
好一点的算法书如果提到了求最大公约数的方法都会这么做的;经典算法!
18 楼
gamekl [专家分:0] 发布于 2010-05-07 16:09:00
#include<stdio.h>
void main()
{
int n,m,max,min,t;
scanf("%d,%d",&n,&m);
if(n>m)
{
max=n;
min=m;
}
else
{
max=m;
min=n;
}
while(t!=0)
{
t=max%min;
max=min;
min=t;
}
printf("它们的最大公约数为%d\n",max);
}
我献丑改的内容。。。最后PRINTF那边只要是MAX就行了,其他小细节我按我的习惯改了改。。。楼主算法上可以再研究下~
19 楼
yuyifan6510 [专家分:0] 发布于 2010-05-08 15:43:00
我先把我的思想给你写出来,你的我等下再看
#include <stdio.h>
main()
{
int a,b,t,c,i;
printf ("请输入两个整数:");
scanf ("%d,%d",&a,&b);
if (b>a)
{
t=a;a=b;b=t;
}
for (i=1;;i++)
{
c=(a*i)%b;
if(c==0) break;
}
printf ("两个数的最大公约数为:%d\n",a*i);
}
20 楼
yuyifan6510 [专家分:0] 发布于 2010-05-08 15:46:00
不好意思,我看成最大公倍数了![em10][em10][em10][em10][em10]
我来回复