虎
点击蓝字 关注我们
年
SPRING FESTIVAL
一.质数判断
质数(素数)的定义:一个大于1的自然数,除了1和它自身外,不能被其他自然数整除的数叫做质数
1.朴素法判断质数
bool isPrime(int n){
if(n < 2) return false;
for(int i = 2; i < n; i ++)
{
if(n % i == 0) return false;
}
return true;
}复制
2.优化版判断素数法
注意:约数是成对出现的,i和n/i,只需要枚举到较小的那个,此处也可以用sqrt()这个库函数,由于反复调用会使得运行效率偏低;
bool isPrime(int n){
if(n < 2) return false;
for(int i = 2; i <= n/i; i ++)
{
if(n % i == 0) return false;
}
return true;
}复制
二.筛质数
1.朴素法筛质数
int primes[N], cnt;
bool st[N];
void getPrimes(int n){
for(int i = 2; i <= n; i ++){
if(!st[i]) primes[cnt ++] = i;
//依次删掉每个i的倍数
for(int j = i + i; j <= n; j += i)
{
st[j] = true;
}
}
}复制
2.优化版筛质数法(埃氏筛法)
int primes[N], cnt;
bool st[N];
void getPrimes(int n){
for(int i = 2; i <= n; i ++){
if(!st[i])
{
primes[cnt ++] = i;
//只删掉质数i的倍数
for(int j = i + i; j <= n; j += i){
st[j] = true;
}
}
}
}复制
3.线性筛质数
int primes[N], cnt;
bool st[N];
void getPrimes(int n){
for(int i = 2; i <= n; i ++){
if(!st[i]) primes[cnt ++] = i;
for(int j = 0; primes[j] <= n / i; j ++){
st[primes[j] * i] = true;
if(i % primes[j] == 0) break;
//primes[j]一定是i的最小质因子
}
}
}复制
三.求约数
1.试除法求约数
vector<int> get_divisors(int n){
vector<int> res;
for(int i = 1; i <= n / i; i ++){
if(n % i == 0){
res.push_back(i);
if(i != n / i) res.push_back(n / i);
}
}
sort(res.begin(), res.end());
return res;
}复制
2.约数个数
约数个数:任何一个数 n ,一定能够表示成 n = a0^p0 * a1^p1 * a2^p2 … ak^pk, 其中 a0,a1,a2…ak都是质数,那么数 n的所有约数个数 T = (1+p0)(1+p1)(1+p2)…(1+pk)
#define long long LL;
LL ans = 1;
unordered_map<int,int> hash;
cin >> x;
for(int i = 2;i <= x/i; ++i){
while(x % i == 0){
x /= i;
hash[i] ++;
}
}
if(x > 1) hash[x] ++;
for(auto i : hash) ans = ans*(i.second + 1) % mod;
cout << ans;复制
3.约数之和
unordered_map<int,int> q;
cin >> x;
for(int i = 2 ; i <= x / i ; i++)
{
while(x % i == 0)
{
x /= i;
q[i]++;
}
}
if(x > 1)
{
q[x]++;
}
long long mul = 1;
for(auto t : q)
{
int p = t.first; //底数
int j = t.second; //指数
long long res = 1;
while(j--)
{
res = (res * p + 1) % mod;
}
mul = mul * res % mod;
}
printf("%lld\n",mul);复制

微信公众号
段舸有话讲
联系方式
duange@88.com
文章转载自段舸有话讲,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。
评论
相关阅读
【专家观点】罗敏:从理论到真实SQL,感受DeepSeek如何做性能优化
墨天轮编辑部
1249次阅读
2025-03-06 16:45:38
【专家有话说第五期】在不同年龄段,DBA应该怎样规划自己的职业发展?
墨天轮编辑部
1236次阅读
2025-03-13 11:40:53
2025年2月国产数据库大事记
墨天轮编辑部
968次阅读
2025-03-05 12:27:34
2025年2月国产数据库中标情况一览:GoldenDB 3500+万!达梦近千万!
通讯员
856次阅读
2025-03-06 11:40:20
2月“墨力原创作者计划”获奖名单公布
墨天轮编辑部
443次阅读
2025-03-13 14:38:19
AI的优化能力,取决于你问问题的能力!
潇湘秦
411次阅读
2025-03-11 11:18:22
优炫数据库成功应用于国家电投集团青海海南州新能源电厂!
优炫软件
337次阅读
2025-03-21 10:34:08
达梦数据与法本信息签署战略合作协议
达梦数据
282次阅读
2025-03-06 09:26:57
国产化+性能王炸!这套国产方案让 3.5T 数据 5 小时“无感搬家”
YMatrix
270次阅读
2025-03-13 09:51:26
磐维数据库对外门户全新升级!
磐维数据库
234次阅读
2025-03-04 15:32:59