最大公约数求法:
int gcd(int a,int b){
if(b==0) return a;
else reutrn gcd(b,a%b);
}
最小公倍数求法:
a/d*b
其中d为最小公倍数。
素数:除一和本身外,不能被其他整数整除
#include<math.h>
bool isPrime(int n){
if(n<=1) return false;
int sqr = (int)sqrt(1.0*n);
for(int i=2;i<=sqr;i++){
if(n%i==0) return false;
}
return true;
}
素数判定另一种方法:“埃氏筛法”
const int maxn=101;
int prime[maxn],pNum=0;
bool p[maxn]={0};
void Find_Prime()
{
for(int i=2;i<maxn;i++){
if(p[i]==false){
prime[pNum++]=i;
for(int j=i+1;j<maxn;j+=i){
p[j]=true;
}
}
}
}
质因子分解:
if(n%prime[i]==0){
fac[num].x=prime[i];
fac[num].cnt=0;
while(n%prime[i]==0){
fac[num].cnt++;
n/=prime[i];
}
num++;
}
if(n!=1){
fac[num].x=n;
fac[num++].cnt=1;
}
//时间复杂度为根号n