*求一个数的所有因子和
#include <stdio.h>
#include <math.h>
typedef long long ll;
int vit[800] = {1, 1}, prime[800], count = 0;
void create_prime()
{
int n = sqrt(800.0);
for (int i = 2; i <= n; i++)
if (vit[i] == 0)
for (int j = i * i; j < 800; j = j + i)
vit[j] = 1;
for (int i = 2; i < 800; i++)
if (vit[i] == 0)
prime[count++] = i;
}
ll dcpsum(int n)
{
ll result = 1, m = sqrt(n + 0.5);
for (int i = 0; prime[i] <= m; i++) {
if (n % prime[i] == 0) {
ll k = 1;
while (n % prime[i] == 0) {
n = n / prime[i];
k = k * prime[i];
}
result = result * (k * prime[i] - 1) / (prime[i] - 1);
}
}
if (n > 1)
result = result * (n + 1);
return result;
}
int main()
{
ll t, n;
create_prime();
scanf("%lld", &t);
for (int i = 0; i < t; i++) {
scanf("%lld", &n);
printf("%lld\n", dcpsum(n) - n);
}
return 0;
}