#include <bits/stdc++.h>
using namespace std;
bool vis[10000004];
vector<long long>prim;
long long maxprim[10000004];//最大素因子
long long num[10000004];
int main() {
memset(vis, 0, sizeof(vis));
memset(num, 0, sizeof(num));
memset(maxprim, 0, sizeof(maxprim));
for (int i = 2; i <= 10000000; ++i) {
if (!vis[i]) {
prim.push_back(i);
maxprim[i] = i;
}
for (int j = 0; j < prim.size(); ++j) {
if (i * prim[j] > 10000000)break;
vis[i * prim[j]] = 1;
maxprim[i * prim[j]] = prim[j];
if (i % prim[j] == 0)break;
}
}
long long n;
long long maxi = 0;
long long x;
long long sum = 0;
scanf("%lld", &n);
for (int i = 0; i < n; ++i) {
scanf("%lld", &x);
sum += x;
num[x]++;
maxi = max(maxi, x);
}
for (int i = maxi; i >= 2; --i) {
num[i] += num[i + 1];
}
for (int i = maxi; i >= 2; --i) {
if (vis[i]) {
num[maxprim[i]] += num[i];
num[i / maxprim[i]] += num[i];
}
}
}
求N个数的阶乘相乘素因子个数总和
猜你喜欢
转载自blog.csdn.net/qq_42671946/article/details/85063698
今日推荐
周排行