最大公约数GCD
#include<bits/stdc++.h>
using namespace std;
int gcd(int a, int b){
if(b == 0) return a;
else return gcd(b, a%b);
}
int main(){
int a,b;
cin>>a>>b;
cout<<gcd(a,b);
return 0;
}
最小公倍数LCM
对于求两个数的最小公倍数,只需要记住下面这个公式即可。
LCM(x, y) = x * y / GCD(x, y)
翻译一下就是:两个数的最小公倍数等于两个数的乘积除以两个数的最大公约数。 所以要求两个数的最小公倍数,我们只需求出他们的最大公约数即可。
#include<bits/stdc++.h>
using namespace std;
int gcd(int a, int b){
if(b == 0) return a;
else return gcd(b, a%b);
}
int main(){
int a,b;
cin>>a>>b;
int c=gcd(a,b);
int d=a*b/c;
cout<<d;
return 0;
}
素数判断
一个大于1的自然数,除了1和它本身之外,没有别的因子,我们就称它为素数。
判断一个素数,可以从定义出发,从2到小于这个数的每个数去除,看是否能除尽。一般情况下,我们没有必要判断这么多个数,只用判断到sqrt(x)就停止了。因为如果比sqrt(x)大的数能除尽的话,就必然存在一个比sqrt(x)小的数能被除尽。(sqrt平方根函数)
#include<bits/stdc++.h>
using namespace std;
int main(){
int a,flag=0;
cin>>a;
for(int i=2; i<=sqrt(a); i++){
if(a%i == 0){
flag=0;
break;
}else
flag=1;
}
if(flag==1) cout<<"是素数";
else cout<<"不是素数";
return 0;
}
质因数个数
示例
输入:120
输出:5
输入:8
输出:3
具体实现
#include<bits/stdc++.h>
using namespace std;
int main(){
int n;
while(cin>>n){
int ans=0;
int i=2;
int q=sqrt(n);
while(n!=1){
while(n%i==0){ //i是质因数
//cout<<i<<" "; //输出质因数
n=n/i;
ans++;
}
if(i==q+1)
break;
i++;
}
if(n!=1) ans++;
cout<<ans<<endl;
}
return 0;
}