| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1881 人关注过本帖
标题:求a,b的最大公约数
只看楼主 加入收藏
苦涩的奶酪
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2012-5-22
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:11 
求a,b的最大公约数
#include<stdio.h>
#include<stdlib.h>
int main()
{
    int a,b,i,j,z,x;
    printf("请输入两个数:\n");
    scanf("%d%d",&a,&b);
    for(i=1;i<=a;i++)
    {
        for(j=1;j<=b;j++)
        {
            x=a/i;
            z=b/j;
           if(x%z==0)
        {    printf("最大公约数为:%d\n",x);   
    system("pause");
    return 0;}
            
        }
    }   
   
}
有什么错误啊!怎么有点不可以~倍数的的可以~
搜索更多相关主题的帖子: include 公约数 
2012-05-25 11:10
a7882669
Rank: 4
等 级:业余侠客
帖 子:192
专家分:290
注 册:2012-4-17
收藏
得分:2 
其实 没必要这样做,有时候简单的东西 反而更好解决一个问题!!
看看这个吧!

#include<stdio.h>
void main()
{
        int m,n,x1,x2,a,b,c;
        x1=1;x2=1;
        printf("请输入m,n:");
        scanf("%d,%d",&m,&n);
        c=(m>n)?m:n;
        while(x1<=c)//求最大公约数
        {
                if(m%x1==0 && n%x1==0)
                {
                        a=x1;
                }
                x1++;
        }

        if(a!=1)//求最小公倍数
        {
                while(m*x2%n!=0)
                {
                        x2++;
                }
                b=m*x2;
        }
        else b=m*n;//最大公约数为1的两个整数,其最小公倍数是二者乘积

        printf("最大公约数为%d\n最小公倍数为%d\n",a,b);

}
2012-05-25 19:23
小糊涂神c30
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:3
帖 子:198
专家分:809
注 册:2012-4-25
收藏
得分:2 
回复 2楼 a7882669
好算法,学习了!
2012-05-26 00:05
laoyang103
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:内蒙古包头
等 级:贵宾
威 望:19
帖 子:3082
专家分:11056
注 册:2010-5-22
收藏
得分:2 
回复 2楼 a7882669
呵呵  真是个好算法  试数求最大公约数。。。。。。

难道你不知道 gcd(a,b) = gcd(b,a%b)吗   最小公倍数就是 (a*b)/gcd(a,b)

                                         
===========深入<----------------->浅出============
2012-05-26 11:54
玉面狂龙
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:82
专家分:156
注 册:2012-2-23
收藏
得分:2 
#include<stdio.h>
#include<stdlib.h>
int main(void)
{
int a,b,i,m,n;
m=a*b;
scanf("%d %d",&a,&b);
for(i=0;i<b;i++)
{
if(a<b)
{
i=a;
a=b;
b=i;
}

}
while(b!=0)
{
i=a/b;
a=b;
b=i;
}
n=b;
printf("最大公约数为%d\n",n);

m=a*b/n;
printf("最大公倍数为%d\n",m);
}
system("pause");
return 0;


[ 本帖最后由 玉面狂龙 于 2012-5-26 12:54 编辑 ]
2012-05-26 12:53
laoyang103
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:内蒙古包头
等 级:贵宾
威 望:19
帖 子:3082
专家分:11056
注 册:2010-5-22
收藏
得分:0 
回复 5楼 玉面狂龙
要是两个100位的整数呢   呵呵 却是难度很大仅供思考
超级最小公倍数
时间限制:8000 ms  |  内存限制:16384 KB
描述
给2个正整数a,b(1<=a,b<=10^100),求a和b的最小公倍数。

输入
输入包含多组数据,每组数据一行,包含两个正整数a和b,中间以一个空格隔开。输入以0 0结束。

输出
每组数据输出一行,为a,b的最小公倍数。

样例输入
123 321
123456789 987654321
0 0
样例输出
13161
13548070123626141

                                         
===========深入<----------------->浅出============
2012-05-26 16:50
小跳蚤
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
威 望:1
帖 子:437
专家分:1623
注 册:2011-4-9
收藏
得分:2 
程序代码:
#include <stdio.h>
int main()
{
    int a,b;
    int n,m;
    int temp;
    while(scanf("%d%d",&a,&b)!=EOF)
    {
        if(a<b)
        {
            a^=b;
            b^=a;
            a^=b;
        }
        m=a,n=b;
        temp=a%b;
        while(temp)
        {
            a=b;
            b=temp;
            temp=a%b;
        }
        printf("%d\n",n*m/b);
    }
    return 0;
}
2012-05-26 19:40
twt141664
Rank: 1
等 级:新手上路
帖 子:5
专家分:8
注 册:2012-5-26
收藏
得分:2 
都这么牛!
2012-05-26 21:55
第二个木鱼
Rank: 2
等 级:论坛游民
帖 子:17
专家分:24
注 册:2012-3-7
收藏
得分:2 
2012-05-27 21:29
hecate3835
Rank: 1
等 级:新手上路
帖 子:15
专家分:4
注 册:2012-4-1
收藏
得分:2 
回复 楼主 苦涩的奶酪
#include "stdio.h"
int main()
{
    int m,n,t,tmp;
    t=1;
    printf("请输入两个数:\n");
    scanf("%d%d",&m,&n);
    tmp=m*n;
    while(t!=0)
    {
        t=m%n;
        m=n;
        n=t;
    }
    tmp/=m;
    printf("最大公约数:%d\n最小公倍数:%d\n",m,tmp);
}
2012-05-27 21:54
快速回复:求a,b的最大公约数
数据加载中...
 
   



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

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