公因数和二进制

关于求两个数的最大公因数,以下是我列出的两种方法:

迭代法:

int gcd(int a, int b) {

while (b!= 0) {

int temp = b;

b = a % b;

a = temp;

}

return a;

}

递归法:

int gcd(int a, int b) {

if (b == 0) return a;

return gcd(b, a % b);

}

可以看出递归法更简洁,且包含了b=0的情况,但可能时间复杂度比迭代法更大

计算二进制中1的个数:

#include <iostream>

using namespace std;

int main() {

int n;

cin >> n;

int num = 0;

while (n) {

n &= (n - 1);

num++;

}

cout << num << endl;

return 0;

}

输入一个数,对于循环内部每次执行这个操作,都会将 n的二进制表示中最右边的 1 变为 0,同时更新 n 的值。然后将1的个数计入num。

全部评论

相关推荐

不愿透露姓名的神秘牛友
07-02 18:35
简历上把1个月实习写成了3个月,会进行背调吗?
码农索隆:一个月有一个月的实习经历,三个月有三个月的实习经历
点赞 评论 收藏
分享
06-15 18:44
黄淮学院 Java
Lynn012:如果是居民楼还是算了吧,看着有点野呢
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务