...待更新,有错误请及时指出.

约数

vector<ll>d; // d用来存约数结果 
	// 求n的约数 
	for(ll i=1;i*i<=n;i++)
	{
		if(n%i==0)
		{
			d.push_back(i);
			if(n/i!=i)d.push_back(n/i);
			//其中n/i!=i的作用,举个例子:100的约数其中有10,100/10=10 
			//只需存一个10即可,故需要用if判断一下
		}
	}
	for(auto x:d)
		cout<<x<<endl;

最大公约数

#欧几里得算法
int gcd(int a,int b)
{
	return b ?gcd(b,a%b) : a;
}

最小公倍数

int d = gcd(a,b);  // d为a,b的最大公约数
int res = (a*b)/d; // 最小公倍数等于两数之乘积除两数最大公约数

求质因数分解

void divide(int n)
{
    int m=0;
    for(int i=2;i<=sqrt(n);i++)
    {
        if(n%i==0)
        {
            p[++m]=i;
            c[m]=0;
            while(n%i==0)n/=i,c[m]++;
        }
    }
    if(n>1)p[++m]=n,c[m]=1;
    for(int i=1;i<=m;i++)
        cout<<p[i]<<"^"<<c[i]<<endl;
}

约数

  • \(N={\prod _{i=1}^m}p_{i}^{c_i}\) 其中\(c_i\)都是正整数,\(p_i\)都是质数。
  • N的正约数的个数为 \(\prod_{i=1}^m (c{_i}+1)\)
  • N的正约数的和为 \(\prod_{i=1}^m(\sum _{j=0}^{c_i})(p_i)^j)\)

LaTeX

\(c_x\) 下标
\(c^x\) 上标