C++数学知识模板

  • Post author:
  • Post category:其他


试除法判定质数

模板

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定理

模板

模板题

代码

分解质因数法求组合数

模板

模板题

代码



版权声明:本文为m0_54615144原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。