C++ gcd 函数的写法

C++写gcd函数有几种写法,下面介绍几种。


1.while循环(常速)

此段代码a、b可以为0

inline int gcd(int a,int b) {
    int r;
    while(b>0) {
        r=a%b;
        a=b;
        b=r;
    }
    return a;
}

2.三目运算符(较快)

此段代码a、b可以为0

int gcd(int a,int b) {
    return b>0 ? gcd(b,a%b):a;
}

3.位运算(超快)

此段代码a、b不能为0

int gcd(int a,int b) {
    while(b^=a^=b^=a%=b);
    return a;
}

  • if+while(较快)
    此段代码a、b可以为0
int gcd(int a,int b) {
    if(b) while((a%=b) && (b%=a));
    return a+b;
}

4.辗转相除法(较快,最常用)

此段代码a、b不能为0

int gcd(int a,int b) {
    if(a%b==0) return b;
        else return (gcd(b,a%b));
}

5.gcd函数库(较慢,但是很方便)

此段代码a、b可以为0

int gcd(int a,int b) {
    return __gcd(a,b);
}
版权声明:本文为博主Zhang, Xuheng原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://nth.ink/cpp/P2565.html

(广告由我们的赞助商提供,内容与本站无关)

评论

  1. Tianheng Ni
    Tianheng Ni 博主
    iPad Safari 12.1.2
    9月前
    2020-8-29 11:03:57

    这两天都是吐槽文,技术文很难得啊👍👍

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇