/* 输入一个正整数,输出它的所有因子之和。例如:输入6,输出12.
因为1, 2, 3, 6是6的因子,1+2+3+6=12
输入 第一行一个整数n描述输入n组测试,接下来n行每行一个正整数。
输出 输出n行,每行输出相应整数的因子之和
输入样例:
1 6
输出样例:
12 */
/*注意!!!当要求输入一个n,并在下面输入n组测试数据(等等等)时,要注意数据定义初值的位置在哪里,是在外循环里面还是在内循环里面,还是说直接在循环外面(俺在说废话),判断它在哪主要就是看循环发生时定义的值是否要进行重置(重定义) */
//法一,用数组先储存因子
#include<iostream>
using namespace std;
int main(){
int n,m,sum;
int num[100001];
cin>>n;
for(int i=0;i<n;i++){ //也可写成 for(;n>0;n--)
sum=0; //sum=0一定要定义在外循环里面,才能保证新的数据输入时sum的值能重置0
cin>>m;
int k=0;
for(int j=1;j<=m;j++){
if(m%j==0){ //判断是否为测试数据的因子
num[k++]=j; //记得一定要k++才能将每组数据(因子)输入进数组
}
}
for(int q=0;q<k;q++){
sum+=num[q];
}
cout<<sum<<endl;
}
return 0;
}
//法二,直接将计算结果加到sum中
#include<iostream>
using namespace std;
int main(){
int n,m,sum;
cin>>n;
for(;n>0;n--){
sum=0;
cin>>m;
for(int i=1;i<=m;i++){
if(m%i==0) sum+=i;
}
cout<<sum<<endl;
}
return 0;
}