算法知识点————数论【最大公约数】【快速幂】【分解质因数】

结论1:两个互质的整数mn不能凑出的最大整数是(n-1)(m-1) -1

结论2:一个数的因数可以拆成n个质因数的乘积。
在这里插入图片描述
黄金分割:0.61803399

在数论中,如果两个或两个以上的整数的最大公约数是 1 ,则称它们为互质
最大公约数: 两数乘积=最大公约数*最小公倍数 ,如果是多个数的话就两个求完在和第三个求。

//辗转相除法
int gcd (int x,int y){
  int z = y;
  while(x%y != 0){
    z = x%y;
    x = y;
    y = z;
  }
  return z;
}

欧拉函数:小于等于n的正整数中与n互质的数的数目

在这里插入图片描述
快速幂算法logn
思想:每一步都把指数减半,而相应的底数做平方运算

typedef long long LL;

LL quick_qwp( LL a, LL b){
  LL res = 1;//任何数的0次幂都为1
  while(b > 0) {//逐位检查b的二进制位数
    if( b & 1){//检查b的最低位是否为1
     	 res = res*a;	 //如果b的最低位为1,则需要乘a
    }
    a = a*a;//底数a平方
    b>>1;//b右移一位
  }
  return res;
}

const int MOD=  998244353;
LL qpw(LL a,LL b){
    LL res =1;
    while( b > 0){
        if( b & 1) res = res * a % MOD;
        a = a * a % MOD;
        b>>=1;
    }
    return res;
}

分解质因数

for(LL i =2 ;i*i <= n ;i++){
  if(n % i == 0){ // i 因数
    //cnt++;//(求质因数个数)
    while(n % i == 0) n/=i;
   // cout<<i<<" ";//输出质因数
  }
}
if( n > 1 ) cnt++; 
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

shan_shmily

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值