公因数和二进制

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

迭代法:

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。

全部评论

相关推荐

12-18 18:50
已编辑
门头沟学院 golang
牛客33637108...:重点是要事已密成,在没有进入这家公司之前,不要有任何的泄露信息,我之前跟你一样,面了一家光伏设备厂,底薪7500加上出差补贴大概有13,000左右,已经给了口头offer了,甚至要了我的在校成绩的所有信息,还向我要了三方的网签二维码,到后面还是毁约了,我干过最愚蠢的事情就是向同学透露要签三方的事,之后的失败只会让他们幸灾乐祸,这是即将结束的大学生活给我的最后一课,不要相信任何的口头三方,该面的就去面,甚至签了三方也有毁约的可能,就像我现在签了三方还在外面实习呢,春招还是要继续参加的,不能停止面试,不然到后面毁三方的时候,重新捡起的面试很麻烦的,这是我一点点小小的见解。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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