| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1489 人关注过本帖
标题:[求助]最大公约数和最小公倍数..
只看楼主 加入收藏
起点线
Rank: 1
等 级:新手上路
帖 子:107
专家分:0
注 册:2006-12-7
收藏
 问题点数:0 回复次数:13 
[求助]最大公约数和最小公倍数..

程序是书上抄的,捡查了几遍也试验了几遍没有抄错..
但是当我运行 8,12 的时候为什么输出的是 8,8
if(m<n) 这里看不清白..觉得m和n都是一个数,没有转换啊.麻烦高手说下..

main()
{
int a,r,m,n,temp;
printf("please input two numbers m,n:\n");
scanf("%d,%d",&m,&n);
if(m<n)
{
temp=m;
n=m;
m=temp;
}
a=m*n;
r=m%n;
while(r)
{
m=n;
n=r;
r=m%n;
}
printf("zui da gong ye shu:%d\n",n);
printf("zui xiao gong bei shu:%d",a/n);
}

搜索更多相关主题的帖子: 最大公约数 最小公倍数 
2007-01-22 14:51
高达
Rank: 1
等 级:新手上路
威 望:1
帖 子:261
专家分:0
注 册:2006-10-27
收藏
得分:0 
if(m<n)
{
temp=m;
n=m;
m=temp;
}
改为
if(m<n)
{
temp=m;
m=n;
n=temp;
}

if(m>n)
{
temp=m;
n=m;
m=temp;
}
使m为最大值
能出现正确结果

[此贴子已经被作者于2007-1-22 15:23:30编辑过]


哎 时间....................
2007-01-22 15:07
penggf
Rank: 1
等 级:新手上路
帖 子:30
专家分:0
注 册:2007-1-19
收藏
得分:0 
lz,我在win-tc和TC上运行过,原程序没问题。运行8,12,输出4,24。

if语句目的是使(m上存的数)>(n上存的数),方便后面的运算。

PS:能想出这种求最大公约数的算法的人真是高手,赞一个。
2007-01-23 10:24
卧龙孔明
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:59
帖 子:3872
专家分:684
注 册:2006-10-13
收藏
得分:0 
以后注意程序书写格式

My Blog: www.aiexp.info
虽然我的路是从这里开始的,但是这里不再是乐土.感谢曾经影响过,引导过,帮助过我的董凯,飞燕,leeco,starwing,Rockcarry,soft_wind等等等等.别了,BCCN.
2007-01-23 12:28
sfeszl
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2007-1-23
收藏
得分:0 

我是一个新手 我没看懂
while(r)
{
m=n;
n=r;
r=m%n;
这个是什么意思啊?


来自远方的人
2007-01-23 15:29
起点线
Rank: 1
等 级:新手上路
帖 子:107
专家分:0
注 册:2006-12-7
收藏
得分:0 
不是吧,我的是TC2.0汉化版.我运行8,12的时候还是输出的是8 8啊..
运行12,8的时候就输出的是 4 24

2007-01-23 17:03
song4
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:38
帖 子:1533
专家分:4
注 册:2006-3-25
收藏
得分:0 
用加减代替%会更快
(这可不算劣质的优化)

嵌入式 ARM 单片机 驱动 RT操作系统 J2ME LINUX  Symbian C C++ 数据结构 JAVA Oracle 设计模式 软件工程 JSP
2007-01-23 17:21
起点线
Rank: 1
等 级:新手上路
帖 子:107
专家分:0
注 册:2006-12-7
收藏
得分:0 

不懂噢..!!

麻烦写出来下啊?


2007-01-24 09:40
pinglideyu
Rank: 3Rank: 3
来 自:武汉工程大学
等 级:论坛游侠
威 望:1
帖 子:735
专家分:140
注 册:2007-1-7
收藏
得分:0 

我给你弄了一下.
看看这个吧.
#include <stdio.h>
main(void)
{
int a,r,m,n,temp;
printf("please input two numbers m,n:\n");
scanf("%d%d",&m,&n);
if(m<n)
{
temp=m;
n=m;
m=temp;
}
r=m%n;
a=(m*n)/r;
while(r)
{
r=m%n;
m=n;
n=r;
}
printf("zui da gong ye shu:%d\n",m);
printf("zui xiao gong bei shu:%d\n",a);
return 0;
}


~~我的明天我知道~~
2007-01-24 15:27
penggf
Rank: 1
等 级:新手上路
帖 子:30
专家分:0
注 册:2007-1-19
收藏
得分:0 
以下是引用sfeszl在2007-1-23 15:29:00的发言:

我是一个新手 我没看懂
while(r)
{
m=n;
n=r;
r=m%n;
这个是什么意思啊?

这是求最大公约数,画表分析:

r m n T/F(while(r))
4 12 8 T
0 8 4 F
4是所求

换组数 m=21,n=12,自己分析下
2007-01-25 12:22
快速回复:[求助]最大公约数和最小公倍数..
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.028766 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved