#include<bits/stdc++.h>usingnamespace std;constint MOD =1e9+7;typedeflonglong ll;intmain(){int n;
cin >> n;
unordered_map<int,int> vis;while(n--){int x;
cin >> x;for(int i =2; i <= x / i; i++){while(x % i ==0){
x = x / i;
vis[i]++;}}if(x >1)
vis[x]++;}
ll res =1;for(auto i : vis)
res = res *(i.second +1)% MOD;
cout<<res<<endl;return0;}
#include<bits/stdc++.h>usingnamespace std;constint MOD =1e9+7;typedeflonglong ll;intmain(){int n;
cin >> n;
unordered_map<int,int> vis;while(n--){int x;
cin >> x;for(int i =2; i <= x / i; i++){while(x % i ==0){
x = x / i;
vis[i]++;}}if(x >1)
vis[x]++;}
ll res =1;for(auto i : vis){int p = i.first, a = i.second;//p表示底数,a表示指数
ll t =1;while(a--)
t =(t * p +1)% MOD;
res = res * t % MOD;}
cout << res << endl;return0;}
试除法求约数#include <bits/stdc++.h>using namespace std;vector<int> get(int n){ vector<int> vis; for (int i = 1; i <= n / i; i++) { if (n % i == 0) { vis.push_back(i); if (i != n / i)