数论(文章搬运)

一、基础算术定理

1.对一些定理的相关理解

(1)每个数n都能被分解为: n = P 1 a 1 ⋅ P 2 a 2 ⋅ P 3 a 3 . . . . . . . P n a n n=P{_1}{^{a_1}}\cdot P{_2}{^{a_2}}\cdot P{_3}{^{a_3}}.......P{_n}{^{a_n}} n=P1a1P2a2P3a3.......Pnan(p为素数)

1.通过另外一种形式: n = P 1 ⋅ P 1 a 1 − 1 ⋅ P 2 a 2 ⋅ P 3 a 3 . . . . . . . P n a n n=P{_1}\cdot P{_1}{^{a_1-1}}\cdot P{_2}{^{a_2}}\cdot P{_3}{^{a_3}}.......P{_n}{^{a_n}} n=P1P1a11P2a2P3a3.......Pnan 我们能够知道n能被其中一个素数整除,并且能知道多少次方
2.结合(1)可以解出正因数个数: s u m = ( 1 + a 1 ) × ( 1 + a 2 ) × ( 1 + a 3 ) … … × ( 1 + a n ) sum=(1+a_1)\times (1+a_2)\times (1+a_3)……\times(1+an) sum=(1+a1)×(1+a2)×(1+a3)×(1+an)
运用1,2我们可以解决很棘手的问题,但值得注意的是1是正因数但并非素数. 在某些问题上需要sum * (1 + 1)
例题
题解

2.搬运

算术基本定理+容斥定理

二、JAVA暴力

JAVA中处理大数方法汇总

三、同余定理

同余定理

四、快速幂

快速幂

#include<iostream>
using namespace std;
long long ksm(long long a , long long b , long long mod){
	long long res = 1 , base = a;
	while(b){
		if(b&1)
		{
			res = res * base % mod;
		}
		base *= base % mod;
		b >>= 1;
	}
	return res;
}
int main(){
	cout << ksm(2,3,100);
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值