C++数学知识模板

试除法判定质数

模板

bool check_primes(int x) {
	for(int i = 2; i * i <= x; i++) {
		if(x % i == 0) return false;
	}
	return true;
}

模板题

866. 试除法判定质数

给定 n个正整数 ai,判定每个数是否是质数。

输入格式

第一行包含整数 n。

接下来 n行,每行包含一个正整数 ai。

输出格式

共 n 行,其中第 i行输出第 i 个正整数 ai 是否为质数,是则输出 Yes,否则输出 No

数据范围

1≤n≤100,
1 ≤ ai≤ 2^{31} − 1

代码

#include <bits/stdc++.h>
using namespace std;
int n;
int x;
bool check_primes(int x) {
    if(x == 1) return false;
    for(int i = 2; i <= x / i; i++) {
        if(x % i == 0) return false;
    }
    return true;
}
int main() {
    cin >> n;
    while(n--) {
        cin >> x;
        if(check_primes(x)) puts("Yes");
        else cout << "No" << endl;
    }
    return 0;
}

试除法分解质因数

模板

void divide(int x)
{
    for (int i = 2; i <= x / i; i ++ )
        if (x % i == 0)
        {
            int s = 0;
            while (x % i == 0) x /= i, s ++ ;
            cout << i << ' ' << s << endl;
        }
    if (x > 1) cout << x << ' ' << 1 << endl;
    cout << endl;
}

模板题

867. 分解质因数

给定 n个正整数 ai,将每个数分解质因数,并按照质因数从小到大的顺序输出每个质因数的底数和指数。

输入格式

第一行包含整数 n。

接下来 n 行,每行包含一个正整数 ai。

输出格式

对于每个正整数 ai,按照从小到大的顺序输出其分解质因数后,每个质因数的底数和指数,每个底数和指数占一行。

每个正整数的质因数全部输出完毕后,输出一个空行。

数据范围

1≤n≤100,
2≤ai≤2×109

代码

#include <bits/stdc++.h>
using namespace std;
void divide(int x)
{
    for (int i = 2; i <= x / i; i ++ )
        if (x % i == 0)
        {
            int s = 0;
            while (x % i == 0) x /= i, s ++ ;
            cout << i << ' ' << s << endl;
        }
    if (x > 1) cout << x << ' ' << 1 << endl;
    cout << endl;
}
int main() {
    int n;
    int x;
    cin >> n;
    while(n--) {
        cin >> x;
        divide(x);
    }
}

线性筛法求素数

模板

模板题

代码

试除法求所有约数

模板

模板题

代码

欧几里得算法

模板

模板题

代码

求欧拉函数

模板

模板题

代码

筛法求欧拉函数

模板

模板题

代码

快速幂

模板

模板题

代码

扩展欧几里得算法

模板

模板题

代码

高斯消元

模板

模板题

代码

递推法求组合数

模板

模板题

代码

通过预处理逆元的方式求组合数

模板

模板题

代码

Lucas定理

模板

模板题

代码

分解质因数法求组合数 

模板

模板题

代码

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值