| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3365 人关注过本帖
标题:请教奇数阶乘和 与 约数倍数改错
只看楼主 加入收藏
liyanhong520
Rank: 1
来 自:水星
等 级:新手上路
帖 子:62
专家分:0
注 册:2008-3-17
收藏
得分:0 
麻烦调试好再发给我
二。最大公约数从大数的一半除 再从大数的三分之一除  
是大数的第一个约数且又能被小数除即最大公约数
2008-04-18 09:18
liyanhong520
Rank: 1
来 自:水星
等 级:新手上路
帖 子:62
专家分:0
注 册:2008-3-17
收藏
得分:0 
你的结果好像是1+1*3+1*3*5
2008-04-18 09:22
qhscqb
Rank: 1
等 级:新手上路
威 望:1
帖 子:343
专家分:0
注 册:2007-2-3
收藏
得分:0 
main()
{
    int a,b,i,k,s;
    int gys(int a,int b);
    int gbs(int a,int b);
    printf("Please input two number:\n");
    scanf("%d %d",&a,&b);
    k=gys(a,b);
    s=gbs(a,b);   
    printf("gys=%d,gbs=%d\n",k,s);
    getch();/*win-tc*/
}
int gys(int a,int b)/*定义求最大公因数的函数*/
{
    int i,k,t;
    if (a>b){t=a;a=b;b=t;}/*当a>b时将ab互换,保证最大公因数不会大于最小数*/
    for (i=1;i<=a;i++)
    {
        if(a%i==0 && b%i==0) k=i;
    }
    return k;
}
int gbs(int a,int b)
{
    int i,s,t;
    if(a>b){t=a;a=b;b=t;}
    for (i=1;i<=a*b;i++)
    {
        if(b*i % a==0) {s=b*i;break;}/*加上break就行了*/
    }
    return s;
}

编程快乐,快乐编程! 没有最好,只有更好!
2008-04-18 11:00
qhscqb
Rank: 1
等 级:新手上路
威 望:1
帖 子:343
专家分:0
注 册:2007-2-3
收藏
得分:0 
你的是什么算法?
[bo]以下是引用 [un]liyanhong520[/un] 在 2008-4-18 09:18 的发言:[/bo]

二。最大公约数从大数的一半除 再从大数的三分之一除  
是大数的第一个约数且又能被小数除即最大公约数

我设计的算法是:

一.分析
1. 最大公约数的取值至多为较小的数(如,6和12)
2. 两个数被某数除,得到的余数均为0时,该数即为最大公约数(6和15,被3除余0)
二.算法
1.设a,b为要求的两个数
2.通过循环对a,b同时取余
3.如果某一数除这两个数余数均为0,保存该数
4.输出结果

void main()
{
    int a,b,i,k,t;
    scanf("%d %d",&a,&b);
    if (a>b){t==a;a==b;b==t;}/*两数交换为了保证下面的循环正常*/
    for(i=1;i<=a;i++) /*i<=a表示最大公约数至多也为较小数*/
    {
        if(a%i==0&&b%i==0)k=i;/*k就是最大公约数*/
    }
    printf("result is %d\n",k);
}

编程快乐,快乐编程! 没有最好,只有更好!
2008-04-18 11:18
qhscqb
Rank: 1
等 级:新手上路
威 望:1
帖 子:343
专家分:0
注 册:2007-2-3
收藏
得分:0 
[bo]以下是引用 [un]liyanhong520[/un] 在 2008-4-18 09:22 的发言:[/bo]

你的结果好像是1+1*3+1*3*5



我的代码是没有问题的,我在tc上也调式成功了,你怎么回事啊.

编程快乐,快乐编程! 没有最好,只有更好!
2008-04-18 11:21
雨中飛燕
Rank: 1
等 级:新手上路
帖 子:765
专家分:0
注 册:2007-10-13
收藏
得分:0 
算最大公约数:
#include<stdio.h>
int main()
{
    int a,b;
    scanf("%u %u",&a,&b);
    while(b)b^=a^=b^=a%=b;
    printf("result is %d\n",a);
}

" border="0" />
2008-04-18 11:29
qhscqb
Rank: 1
等 级:新手上路
威 望:1
帖 子:343
专家分:0
注 册:2007-2-3
收藏
得分:0 
回复 16# 的帖子
好算法,佩服!

编程快乐,快乐编程! 没有最好,只有更好!
2008-04-18 11:33
liyanhong520
Rank: 1
来 自:水星
等 级:新手上路
帖 子:62
专家分:0
注 册:2008-3-17
收藏
得分:0 
RE
第一题多个CONTINUE  少个ELSE  都没人指出来啊
郁闷
2008-04-20 10:03
快速回复:请教奇数阶乘和 与 约数倍数改错
数据加载中...
 
   



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

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