标题:求公约数
只看楼主
qiqicai
Rank: 1
等 级:新手上路
帖 子:32
专家分:0
注 册:2021-3-23
结帖率:84.62%
已结贴  问题点数:20 回复次数:2 
求公约数
#include <stdio.h>
 
int main()
{
    int n1, n2, i, gcd;
 
    printf("输入两个正整数,以空格分隔: ");
    scanf("%d %d", &n1, &n2);
 
    for(i=1; i <= n1 && i <= n2; ++i)         
    {                                            
        // 判断 i 是否为最大公约数
        if(n1%i==0 && n2%i==0)                这块不用取i的最大值吗  如果n1=4 n2=8  那i要是为2 那就能满足 (n1%i==0 && n2%i==0) 但是i并不是最大公约数  
            gcd = i;                           那这块不是有问题吗  为什么程序能正常运行
    }
 
    printf("%d 和 %d 的最大公约数是 %d", n1, n2, gcd);
 
    return 0;
}
搜索更多相关主题的帖子: 最大公约数 公约数 判断 printf int 
2021-04-06 22:01
蔚然与成风
Rank: 2
等 级:论坛游民
威 望:2
帖 子:11
专家分:38
注 册:2020-6-30
得分:10 
r=2,gcd=2,但是for循环并没有结束,还是 i <= n1 && i <= n2,一直到i=4时,++i,此时i=5,不满足i <= n1 && i <= n2 跳出循环;
2021-04-06 22:27
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:10 
算法也需要改进

程序代码:
#include <stdio.h>

unsigned gcd( unsigned a, unsigned b )
{
    for( ; b!=0; )
    {
        unsigned t = a;
        a = b;
        b = t%b;
    }
    return a;
}

int main( void )
{
    unsigned a, b;
    printf( "%s", "输入两个正整数,以空白字符分隔: " );
    scanf( "%u%u", &a, &b );
    printf( "%u 和 %u 的最大公约数是 %u\n", a, b, gcd(a,b) );
}
2021-04-07 08:32



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-505360-1-1.html




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

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