Cod sursa(job #2227265)

Utilizator YusyBossFares Yusuf YusyBoss Data 31 iulie 2018 16:11:24
Problema Suma si numarul divizorilor Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.97 kb
#include <fstream>

using namespace std;

bool c[1000003];
int prime[78500];

int main() {
  ifstream cin ("ssnd.in");
  ofstream cout ("ssnd.out");
  int i, j, nrp, nrdiv, cx, nrdivp;
  nrp = 0;
  for (i = 2; i <= 1000000; i++) {
    if (c[i] == 0) {
      for (j = 2 * i; j <= 1000000; j += i)
        c[j] = 1;
      prime[nrp++] = i;
    }
  }
  int n, x;
  long long s, p, sumdiv;
  cin >> n;
  for (i = 0; i < n; i++) {
    cin >> x;
    cx = x;
    j = 0;
    nrdiv = 1;
    sumdiv = 1;
    while (j < nrp && x > 1) {
      nrdivp = 0;
      s = 1;
      p = 1;
      while (x % prime[j] == 0) {
        x /= prime[j];
        nrdivp++;
        p *= prime[j];
        s += p;
      }
      if (nrdivp != 0) {
        nrdiv *= (nrdivp + 1);
        sumdiv = sumdiv * s;
      }
      j++;
    }
    if (x > 1) {
      nrdiv *= 2;
      sumdiv = sumdiv * (x + 1);
    }
    cout << nrdiv << ' ' << sumdiv << '\n';
  }
  return 0;
}