#include<iostream>#include<unordered_map>usingnamespace std;
typedeflonglong LL;
constint N = 110, mod = 1e9 + 7;
unordered_map<int, int> primes;
voidsolve(int x){
for (int i = 2; i <= x / i; i ++) {
while (x % i == 0) {
x /= i;
primes[i] ++;
}
}
if (x > 1) primes[x] ++;
}
intmain(){
int n;
cin >> n;
while (n --) {
int x;
cin >> x;
solve(x);
}
LL res = 1;
for (auto prime : primes) res = res * (prime.second + 1) % mod;
cout << res << endl;
return0;
}
约数个数的公式推导
① 由唯一分解定理可知,任何一个大于 1 的自然数 N,如果 N 不为质数,都可以唯一分解成有限个质数的乘积 N=Pα11∗Pα22∗⋯∗Pαnn,这里 P1<P2<⋯<Pn 均为质数,指数 αi 是正数;
② 任何一个质数也可以写成 N=Pα11∗Pα22∗⋯∗Pαnn 的形式,只需让 Pn=N,αn=1,α1=α2=⋯=αn−1=0;
③ 由 ① ② 可知对任何一个大于 1 的自然数 N,都可以用 N=Pα11∗Pα22∗⋯∗Pαnn 表示,其中 P1<P2<⋯<Pn 均为质数,指数 αi 是非负数;(指数可以为 0 );
④ 约数个数 M=(α1+1)(α2+1)⋯(αn+1),证明如下:因为对于 N 的任意一个约数 d ,都有 d=Pβ11∗Pβ22∗⋯∗Pβnn,每一组 β1 ~ βn 的组合对应一个约数,组合的个数等于约数的个数,故 N 的约数个数等于 α1 ~ αi 组合个数,对于每一个 Pi,指数可以取的值有 0 ~ αi,共 αi+1 个,故约数个数 M=(α1+1)(α2+1)⋯(αn+1);
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)