| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1770 人关注过本帖
标题:更相减损法
只看楼主 加入收藏
预备大佬
Rank: 1
等 级:新手上路
帖 子:33
专家分:4
注 册:2018-11-8
结帖率:81.82%
收藏
已结贴  问题点数:15 回复次数:9 
更相减损法
#include<stdio.h>
int main()
{
    int a,b,t,c;
    scanf("%d%d",&a,&b);
    if(a<b)
    {
        t = a;
        a = b;
        b = t;
    }
    c = a - b;
    while(c != 0)
    {
        a=b;
        b=c;
        c = a - b;

    }printf("%d",a);
    return 0;
}
程序运行不正确,请求支援
搜索更多相关主题的帖子: 相减 int printf return 请求 
2018-11-21 15:29
吹水佬
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:451
帖 子:10609
专家分:43210
注 册:2014-5-20
收藏
得分:3 
这里观察一下c
    while(c != 0)
    {
        a=b;
        b=c;
        c = a - b;
        printf("%d\n",c);
    }
2018-11-21 15:42
no1xijin
Rank: 9Rank: 9Rank: 9
来 自:江西
等 级:贵宾
威 望:20
帖 子:211
专家分:1207
注 册:2015-7-8
收藏
得分:2 
还是先好好了解下 更相减损法 ,再看看自己能不能修改吧
百度百科 更相减损法:https://baike.baidu.com/item/%E6%9B%B4%E7%9B%B8%E5%87%8F%E6%8D%9F%E6%B3%95/10277459
百度经验 如何用更相减损术求最大公约数 【其中该经验的结论有误,应当是 5*2=10就是40和30的最大公约数】https://jingyan.baidu.com/article/915fc414ada44b51394b20be.html

126邮箱联系方式:no1xijin@126. com
2018-11-21 15:46
吹水佬
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:451
帖 子:10609
专家分:43210
注 册:2014-5-20
收藏
得分:8 
#include<stdio.h>
int main()
{
    int a,b,t;
    scanf("%d%d",&a,&b);
    do
    {
        if (a<b)
        {
            t = a;
            a = b;
            b = t;
        }
        a = a - b;
    }
    while(a != 0);
    printf("%d",b);
    return 0;
}
2018-11-21 16:01
C基础
Rank: 6Rank: 6
等 级:侠之大者
威 望:6
帖 子:133
专家分:421
注 册:2018-10-15
收藏
得分:2 
给你来个拓展思维———辗转相除法
#include "stdio.h"
int main()
{
    int m,n,r,t,i;
    scanf("%d%d",&m,&n);
    if(m>=n)
    for(i=0;i<10000;i++)
    {
        r=m%n;
        if(r==0)
        {
            printf("最大公约数为:%d\n",n);
            break;
        }
        m=n;
        n=r;
    }
    else
    {
        t=m;
        m=n;
        n=t;
        for(i=0;i<10000;i++)
        {
          r=m%n;
          if(r==0)
          {
              printf("最大公约数为:%d\n",n);
            break;
          }
          m=n;
          n=r;
        }
    }
return 0;
}
2018-11-21 22:17
预备大佬
Rank: 1
等 级:新手上路
帖 子:33
专家分:4
注 册:2018-11-8
收藏
得分:0 
回复 2楼 吹水佬
c输出应该是0了吧
2018-11-24 00:12
预备大佬
Rank: 1
等 级:新手上路
帖 子:33
专家分:4
注 册:2018-11-8
收藏
得分:0 
回复 4楼 吹水佬
输出a或b是否都可以?
2018-11-24 00:13
预备大佬
Rank: 1
等 级:新手上路
帖 子:33
专家分:4
注 册:2018-11-8
收藏
得分:0 
回复 5楼 C基础
我感觉你这个辗转相除很复杂
#include<stdio.h>
int main()
{
    int a,b,c,t,i,m,n;
    printf("请输入两个数\n");
    scanf("%d%d",&a,&b);
    m = a;n = b;
    if(a>b)
    {
        t=a;
        a=b;
        b=t;
    }
    c=a%b;
    while(c!=0)
    {
        a=b;
        b=c;
        c=a%b;
    }
    printf("最大公约数为%d",b);
    printf("最小公倍数为%d",m * n / b);
    return 0;
}我写的这个
2018-11-24 00:20
预备大佬
Rank: 1
等 级:新手上路
帖 子:33
专家分:4
注 册:2018-11-8
收藏
得分:0 
回复 3楼 no1xijin
谢谢
2018-11-24 00:21
预备大佬
Rank: 1
等 级:新手上路
帖 子:33
专家分:4
注 册:2018-11-8
收藏
得分:0 
回复 4楼 吹水佬
为什么a!=0,减到最后a应该等于0才对
2018-11-24 00:23
快速回复:更相减损法
数据加载中...
 
   



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

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