fork download
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. #define faster() ios_base::sync_with_stdio(false);cin.tie(NULL);cout.tie(NULL);
  4. int nt[1000005]={};
  5. //Hàm sang() dùng sàng số nguyên tố
  6. void sang(){
  7. nt[0]=1;
  8. nt[1]=1;
  9. for (int i=2;i<=sqrt(1000000);i++)
  10. if (nt[i]==0)
  11. for (int j=i*i;j<=1000000;j+=i) nt[j]=1;
  12. }
  13. // Hàm sumnt() dùng để tính tổng các thừa số nguyên tố
  14. int sumnt(int n){
  15. int sum=0;
  16. for (int i=2;i<=sqrt(n);i++){
  17. while (n%i==0){
  18. sum+=i;
  19. n/=i;
  20. }
  21. // Nếu n là số nguyên tố thì đưa ra tổng và thoát hàm
  22. if (nt[n]==0) return sum+n;
  23. }
  24. // Nếu n là số nguyên tố lớn nhất thì cộng thêm và đưa ra
  25. if (nt[n]==0) sum+=n;
  26. return sum;
  27. }
  28. void solve(){
  29. int n;
  30. cin >> n;
  31. long long sum=0;
  32. int x;
  33. for (int i=1;i<=n;i++){
  34. cin >> x;
  35. sum+=sumnt(x);
  36. }
  37. cout << sum << "\n";
  38. }
  39. int main(){
  40. faster();
  41. sang();
  42. int t;
  43. cin >> t;
  44. while (t--) solve();
  45. }
Success #stdin #stdout 0.01s 7612KB
stdin
1
4
7 9 10 100
stdout
34