Cod sursa(job #1882379)

Utilizator AlexandruLuchianov1Alex Luchianov AlexandruLuchianov1 Data 17 februarie 2017 10:06:04
Problema Sum Scor 75
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.61 kb
#include <iostream>
#include <cstdio>

using namespace std;
int v[1000001];
int prime[1000001];
int main()
{
  int n ,m = 0;

  freopen("sum.in","r",stdin);
  freopen("sum.out","w",stdout);
  scanf("%d",&n);
  for(int i = 0 ; i < n;i++){
    scanf("%d",&v[i]);
    m = max(v[i], m);
  }

  for(int i = 1 ;i <= m ;i++)
    prime[i] = i;
  for(int i = 2;i <= m ;i++){

    if(prime[i] == i ){
      for(int j = i ;j <= m ;j += i){
        prime[j] /= i;
        prime[j] *= (i-1);
      }
    }
  }
  for(int i = 0 ; i < n;i++){
    printf("%lld\n",prime[v[i]] * v[i] * 2LL);
  }
  return 0;
}