公因数和二进制

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

迭代法:

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。

全部评论

相关推荐

评论
点赞
收藏
分享
牛客网
牛客企业服务