约数个数和约数之和算法总结

知识概览

约数个数

基于算数基本定理,假设N分解质因数的结果为

可得对于N的任何一个约数d,有

因为N的每一个约数和~的一种选法是一一对应的,根据乘法原理可得,

一个数的约数个数为

约数之和

一个数的约数之和公式为

多项式乘积的每一项为

正好对应的是一个数的每一个约数。

例题展示

约数个数

题目链接

活动 - AcWing系统讲解常用算法与数据结构,给出相应代码模板,并会布置、讲解相应的基础算法题目。https://www.acwing.com/problem/content/872/

代码
cpp 复制代码
#include <iostream>
#include <algorithm>
#include <unordered_map>

using namespace std;

typedef long long LL;

const int mod = 1e9 + 7;

int main()
{
    int n;
    cin >> n;
    
    unordered_map<int, int> primes;
    while (n--)
    {
        int x;
        cin >> x;
        
        for (int i = 2; i <= x / i; i++)
            while (x % i == 0)
            {
                x /= i;
                primes[i]++;
            }
            
        if (x > 1) primes[x]++;
    }
    
    LL res = 1;
    for (auto prime : primes) res = res * (prime.second + 1) % mod;
    
    cout << res << endl;
    
    return 0;
}

约数之和

题目链接

活动 - AcWing系统讲解常用算法与数据结构,给出相应代码模板,并会布置、讲解相应的基础算法题目。https://www.acwing.com/problem/content/873/

代码
cpp 复制代码
#include <iostream>
#include <algorithm>
#include <unordered_map>

using namespace std;

typedef long long LL;

const int mod = 1e9 + 7;

int main()
{
    int n;
    cin >> n;
    
    unordered_map<int, int> primes;
    while (n--)
    {
        int x;
        cin >> x;
        
        for (int i = 2; i <= x / i; i++)
            while (x % i == 0)
            {
                x /= i;
                primes[i]++;
            }
            
        if (x > 1) primes[x]++;
    }
    
    LL res = 1;
    for (auto prime : primes)
    {
        int p = prime.first, a = prime.second;
        LL t = 1;
        while (a--) t = (t * p + 1) % mod;
        res = res * t % mod;
    }
    
    cout << res << endl;
    
    return 0;
}

参考资料

  1. AcWing算法基础课
相关推荐
随缘而动,随遇而安2 小时前
第八十八篇 大数据中的递归算法:从俄罗斯套娃到分布式计算的奇妙之旅
大数据·数据结构·算法
IT古董2 小时前
【第二章:机器学习与神经网络概述】03.类算法理论与实践-(3)决策树分类器
神经网络·算法·机器学习
水木兰亭5 小时前
数据结构之——树及树的存储
数据结构·c++·学习·算法
Jess076 小时前
插入排序的简单介绍
数据结构·算法·排序算法
老一岁6 小时前
选择排序算法详解
数据结构·算法·排序算法
xindafu6 小时前
代码随想录算法训练营第四十二天|动态规划part9
算法·动态规划
xindafu6 小时前
代码随想录算法训练营第四十五天|动态规划part12
算法·动态规划
ysa0510307 小时前
Dijkstra 算法#图论
数据结构·算法·图论
一定要AK8 小时前
2025—暑期训练一
算法
一定要AK8 小时前
贪心专题练习
算法