| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1124 人关注过本帖
标题:最大公约数这么编怎么出不来结果呢?
只看楼主 加入收藏
宅云云丶
Rank: 2
等 级:论坛游民
帖 子:71
专家分:11
注 册:2011-10-25
结帖率:92.86%
收藏
已结贴  问题点数:10 回复次数:11 
最大公约数这么编怎么出不来结果呢?
程序代码:
#include<stdio.h>
#include<matn.h>
int main()
{
    int m,n,a;
    printf("请输入2个数:\n");
    scanf("%d,%d",&m,&n);
    if(m>n)
    {
        if(m%n==0)
            printf("%d",n);
        else
            for(a=n;a>0;a--)
            {
                if(n%a==0)
                {
                    if(m%a==0)
                        printf("%d",a);
                }

            }
    }
    else
    {
        t=m;
        m=n;
        n=t;
        if(m%n==0)
            printf("%d",n);
        else
            for(a=n;a>0;a--)
            {
                if(n%a==0)
                {
                    if(m%a==0)
                        printf("%d",a);
                }

            }

    }
return 0;

}
搜索更多相关主题的帖子: color 公约数 
2011-11-16 19:25
AnZai_Zero
Rank: 2
等 级:论坛游民
帖 子:25
专家分:23
注 册:2011-11-2
收藏
得分:1 
根据你的程序,改了下,看看,不过在输入两个数的时候中间要加逗号
#include<stdio.h>
#include<math.h>
int main()
{
    int m,n,a,t;
    printf("请输入2个数:\n");
    scanf("%d,%d",&m,&n);
    if(m>n)
    {
        if(m%n==0)
            printf("%d",n);
        else
            for(a=n;a>0;a--)
        {
            if(n%a==0)
            {
                if(m%a==0)
                {
                    printf("%d",a);
                    break;
                }
            }
            
        }
    }
    else
    {
        t=m;
        m=n;
        n=t;
        if(m%n==0)
            printf("%d",n);
        else
            for(a=n;a>0;a--)
        {
            if(n%a==0)
            {
                if(m%a==0)
                {
                    printf("%d",a);
                    break;
                }
                }

            }

    }
return 0;

}
2011-11-16 19:35
bianchenyang
Rank: 2
等 级:论坛游民
帖 子:21
专家分:26
注 册:2011-11-14
收藏
得分:1 
#include<stdio.h>
int main()
{
    int a,b,temp;
    printf("请输入两个数:");
    scanf("%d%d",&a,&b);
    if(a<b)
    {
        temp=a;
        a=b;
        b=temp;
    }
    while(b!=0)
    {
        temp=a%b;
        a=b;
        b=temp;
    }
    printf("%d\n",a);
}
我的想法是:如果A小于B则交换,然后利用辗转相除法。即可。。。。。
2011-11-16 20:01
宅云云丶
Rank: 2
等 级:论坛游民
帖 子:71
专家分:11
注 册:2011-10-25
收藏
得分:0 
回复 2楼 AnZai_Zero
还是不对
2011-11-16 20:12
宅云云丶
Rank: 2
等 级:论坛游民
帖 子:71
专家分:11
注 册:2011-10-25
收藏
得分:0 
回复 3楼 bianchenyang
谢谢你的想法 但是我是想用自己的那个方法
2011-11-16 20:12
laoyang103
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:内蒙古包头
等 级:贵宾
威 望:19
帖 子:3082
专家分:11056
注 册:2010-5-22
收藏
得分:1 
最大公约数(gcd)是这样求的
程序代码:
#include <stdio.h>
int gcd(int a,int b)
{
    if(b == 0)
        return a;
    return gcd(b,a%b);
}
int main()
{
    int i,j,n;
    int a,b;
    scanf("%d",&n);
    while(n--)
    {
        scanf("%d%d",&a,&b);
        printf("%d\n",gcd(a,b));
    }
    return 0;
}

                                         
===========深入<----------------->浅出============
2011-11-16 21:12
AnZai_Zero
Rank: 2
等 级:论坛游民
帖 子:25
专家分:23
注 册:2011-11-2
收藏
得分:0 
回复 4楼 宅云云丶
怎么不对了,报什么错误,我试验过了可以,可以啊
2011-11-16 21:58
ZJQLOVELYY
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:105
专家分:166
注 册:2011-8-1
收藏
得分:1 
六楼的,顶起!
2011-11-16 23:03
庄学添
Rank: 1
等 级:新手上路
帖 子:12
专家分:6
注 册:2011-11-11
收藏
得分:1 
这个是改过后的
#include<stdio.h>
 #include<math.h>
 int main()
 {
     int m,n,a,t;
     printf("请输入2个数:\n");
     scanf("%d,%d",&m,&n);
     if(m>n)
     {
         if(m%n==0)
             printf("%d",n);
         else
             for(a=n;a>0;a--)
             {
                 if(n%a==0)
                 {
                     if(m%a==0)
                         printf("%d",a);
                 }
 
            }
     }
     else
     {
         t=m;
         m=n;
         n=t;
         if(m%n==0)
             printf("%d",n);
         else
             for(a=n;a>0;a--)
             {
                 if(n%a==0)
                 {
                     if(m%a==0)
                         printf("%d",a);
                 }
 
            }
 
    }
 return 0;
 
}
2011-11-17 00:08
朱稳
Rank: 2
等 级:论坛游民
帖 子:14
专家分:10
注 册:2011-11-2
收藏
得分:1 
程序代码:
#include<stdio.h>
int tell (int m, int n);
int main()
{
    int i,a,b;
    printf("Input a and b:");
    scanf("%d %d",&a,&b);
    i=tell(a,b);
    for(   ;i > 0;i--)
    {
        if(a%i==0&&b%i==0)
        {
            printf("最大公约数是 %d\n",i);
            break;
        }
    }
    return 0;
}

int tell (int m, int n)
{
    if (m>=n)
        return n;
    else
        return m;
}
这样也行,不过顶六楼。

[ 本帖最后由 朱稳 于 2011-11-17 00:19 编辑 ]
2011-11-17 00:17
快速回复:最大公约数这么编怎么出不来结果呢?
数据加载中...
 
   



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

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