import java.util.BitSet; import java.util.Scanner; import java.math.BigInteger; class AtkinSieveTest { public static class AtkinSieve { public static BitSet getPrimesUpTo (int limit) { BitSet sieve = new BitSet(); // for (long x2 = 1L, dx2 = 3L; x2 < limit; x2 += dx2, dx2 += 2L) for (long y2 = 1L, dy2 = 3L, n; y2 < limit; y2 += dy2, dy2 += 2L) { // n = (x2 << 2L) + y2; if (n <= limit && (n % 12L == 1L || n % 12L == 5L)) sieve.flip((int)n); // n -= x2; if (n <= limit && n % 12L == 7L) sieve.flip((int)n); // if (x2 > y2) { n -= y2 << 1L; if (n <= limit && n % 12L == 11L) sieve.flip((int)n); } } // int r = 5; for (long r2 = r * r, dr2 = (r << 1L) + 1L; r2 < limit; ++r, r2 += dr2, dr2 += 2L) if (sieve.get(r)) for (long mr2 = r2; mr2 < limit; mr2 += r2) sieve.set((int)mr2, false); // if (limit > 2) sieve.set(2, true); if (limit > 3) sieve.set(3, true); return sieve; } } public static void main (String[] args) { Scanner scanner = new Scanner(System.in); int limit = 1000009;long []z=new long[78500]; int ii=0;long xx=0; BigInteger d = BigInteger.valueOf(0); BitSet primes = AtkinSieve.getPrimesUpTo(limit); for (int number = 2; number <= limit; ++number) if (primes.get(number)) z[ii++]=number; int limit_a = scanner.nextInt(); for (int number = 0; number < limit_a; ++number){ long x=scanner.nextLong();ii=0;long xxx=x;//System.out.println(z[ii]); d=d.add(BigInteger.valueOf(x));while(x>1&&z[ii]>0){while(x%z[ii]==0){x/=z[ii];d=d.add(BigInteger.valueOf(x));}ii++; if(z[ii]==0) d=d.add(BigInteger.valueOf(1)); } } System.out.println(d); } }