| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2910 人关注过本帖
标题:最大公约数,为什么不行?
只看楼主 加入收藏
feng1256
Rank: 4
等 级:贵宾
威 望:14
帖 子:2899
专家分:0
注 册:2005-11-24
收藏
得分:0 
以下是引用alonefire在2006-2-22 14:41:00的发言:
/* Note:Your choice is C IDE */
#include "stdio.h"
main()
{
int a,b,c,d;
scanf("%d%d\n",&a,&b);
for(c=1;c<=a&&c<=b;c=c+1)
{if (a%c==0&&b%c==0) d=c;}
printf("%d",d);
}

嘿嘿scanf("%d%d\n",&a,&b); 这是什么呀?


叁蓙大山:工謪、稅務、嗣發 抱歉:不回答女人的问题
2006-02-23 01:37
feng1256
Rank: 4
等 级:贵宾
威 望:14
帖 子:2899
专家分:0
注 册:2005-11-24
收藏
得分:0 
2-10楼

叁蓙大山:工謪、稅務、嗣發 抱歉:不回答女人的问题
2006-02-23 01:38
zhangjuan
Rank: 1
等 级:新手上路
帖 子:992
专家分:0
注 册:2006-1-19
收藏
得分:0 
以下是引用alonefire在2006-2-22 14:41:00的发言:
/* Note:Your choice is C IDE */
#include "stdio.h"
main()
{
int a,b,c,d;
scanf("%d%d\n",&a,&b);
for(c=1;c<=a&&c<=b;c=c+1)
{if (a%c==0&&b%c==0) d=c;}
printf("%d",d);
}

你这不是求最大公约数吧,这个d的值是小于a,同时也小于b的最小数吧。


2006-02-23 13:23
zhangjuan
Rank: 1
等 级:新手上路
帖 子:992
专家分:0
注 册:2006-1-19
收藏
得分:0 
楼主你的算法有问题吧。
求最大公约数我只知道三种算法:
辗转相除法
更相减损法
你用的是列举法
但是用得好像不正确,一时之间还没有找到为什么?

2006-02-23 13:32
柳儿
Rank: 6Rank: 6
等 级:贵宾
威 望:25
帖 子:1830
专家分:30
注 册:2004-9-23
收藏
得分:0 

算法没问题。
我用C++的编了一下,没问题啊。

#include <iostream>
using namespace std;

int main()
{
int a,b,c,d;
cout << "input a:"<<endl;
cin >> a;
cout << "input b:" << endl;
cin >> b;
for (c=1;c<=a&&c<=b;c++ )
{
if (a%c==0 && b%c==0)
{
d=c;
}
}
cout << "d:" << d <<endl;
return 0;
}


成功会使人骄傲。如果你骄傲自大,你就会停止学习。不学习,人就停止了进步
2006-02-23 13:45
zhangjuan
Rank: 1
等 级:新手上路
帖 子:992
专家分:0
注 册:2006-1-19
收藏
得分:0 

楼上的,如果你输入a、b的值成倍数,假如a=12,b=36,正确的结果应该是12,但是输出为2,如何解释呢?


2006-02-23 13:53
SunShining
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:31
帖 子:2215
专家分:0
注 册:2006-2-17
收藏
得分:0 
/* Note:Your choice is C IDE */
#include "stdio.h"
main()
{
int a,b,c,d;
scanf("%d %d",&a,&b);
for(c=1;c<=a&&c<=b;c=c+1)
if (a%c==0&&b%c==0) d=c;
printf("%d",d);
getch();
}


没问题 .顶9楼

[glow=255,violet,2]闭关修炼ing...[/glow] [FLASH=360,180]http://www./chinaren.swf[/FLASH]
2006-02-23 14:00
柳儿
Rank: 6Rank: 6
等 级:贵宾
威 望:25
帖 子:1830
专家分:30
注 册:2004-9-23
收藏
得分:0 
以下是引用zhangjuan在2006-2-23 13:53:00的发言:

楼上的,如果你输入a、b的值成倍数,假如a=12,b=36,正确的结果应该是12,但是输出为2,如何解释呢?

如果你能编一下我写的程序,看一下结果,你就会发现,结果是12。
我没TC,所以没编楼主的程序。
我只是想说明,这个算法是没问题的。如果结果不对,那是其他原因啦。


成功会使人骄傲。如果你骄傲自大,你就会停止学习。不学习,人就停止了进步
2006-02-23 14:04
zhangjuan
Rank: 1
等 级:新手上路
帖 子:992
专家分:0
注 册:2006-1-19
收藏
得分:0 

2006-02-23 14:52
amzyb
Rank: 1
等 级:新手上路
帖 子:76
专家分:0
注 册:2005-1-10
收藏
得分:0 
To 2楼:如果其他没有问题的话,从1开始就可以的。
To 9楼:强人!
To 15楼:小弟刚开始学C++,还希望您多多提携.:)

[此贴子已经被作者于2006-2-23 16:23:20编辑过]

2006-02-23 16:19
快速回复:最大公约数,为什么不行?
数据加载中...
 
   



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

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