This commit is contained in:
estomm
2021-09-17 08:31:23 +08:00
parent 46d99bdb1e
commit 3cceab164e
3 changed files with 144 additions and 1 deletions

View File

@@ -17,7 +17,7 @@
操作 | 性质
|-----| -----|
n & (n - 1) | n中的最后一个1变成0。
n & (\~n + 1) | lowbit()运算n中最后一个1保留。
n & (\~n + 1)<br> n&(n^(n-1)) | lowbit()运算n中最后一个1保留。
(\~n) + 1== -n | 计算机中补码表示的-n。位运算取反
n/2 | 等价于 右移一位 n >> 1
n*2 | 等价于 左移一位 n << 1

View File

@@ -0,0 +1,112 @@
## 最大公约数
### 循环法
```
#include<iostream>
using namespace std;
int gcd1(int x,int y){
if(x%y==0){
return y;
}
return gcd1(y,x%y);
}
int gcd2(int x,int y){
int r = x % y;
while( r )
{
x = y;
y = r;
r = x % y;
}
return y;
}
int lcm(int x,int y){
int k = gcd2(x,y);
return x*y/k;
}
int main(){
int x=60,y=95;
cout<<gcd1(x,y);
return 0;
}
```
### 递归法
```
#include<iostream>
using namespace std;
int gcd1(int x,int y){
if(x%y==0){
return y;
}
return gcd1(y,x%y);
}
int gcd2(int x,int y){
int r = x % y;
while( r )
{
x = y;
y = r;
r = x % y;
}
return y;
}
int lcm(int x,int y){
int k = gcd2(x,y);
return x*y/k;
}
int main(){
int x=60,y=95;
cout<<gcd1(x,y);
return 0;
}
```
## 最小公倍数
```
#include<iostream>
using namespace std;
int gcd1(int x,int y){
if(x%y==0){
return y;
}
return gcd1(y,x%y);
}
int gcd2(int x,int y){
int r = x % y;
while( r )
{
x = y;
y = r;
r = x % y;
}
return y;
}
int lcm(int x,int y){
int k = gcd2(x,y);
return x*y/k;
}
int main(){
int x=60,y=95;
cout<<gcd1(x,y);
return 0;
}
```

View File

@@ -0,0 +1,31 @@
#include<iostream>
using namespace std;
int gcd1(int x,int y){
if(x%y==0){
return y;
}
return gcd1(y,x%y);
}
int gcd2(int x,int y){
int r = x % y;
while( r )
{
x = y;
y = r;
r = x % y;
}
return y;
}
int lcm(int x,int y){
int k = gcd2(x,y);
return x*y/k;
}
int main(){
int x=60,y=95;
cout<<gcd1(x,y);
return 0;
}