判断亲和数
两数互为对方的真约数之和,则两数互为亲和数
程序如下
int main(){
int m,a[m],b[m];
cin>>m;
int x,y;
int sumx=0,sumy=0;
for(int p=1;p<=m;p++){
cin>>a[p]>>b[p];
}
for(int n=1;n<=m;n++){//对每一行
x=a[n],y=b[n];//接下来判断x,y是否为亲和数
for(int j=1;j<=x/2;j++){
if(x%j==0) sumx+=j;
}
for(int k=1;k<=y/2;k++){
if(y%k==0) sumy+=k;
}
if(sumx==y&&sumy==x) cout<<"YES"<<endl;
else cout<<"NO"<<endl;
sumx=sumy=0;//注意要清零
}
}
运行截图
编程遇到的问题
无论输入什么值,结果都为NO。
原因:sumx和sumy没有清零
220 284是一对亲和数,如果将他们放到第一行,则输出NO,不在第一行,则输出YES
原因:sumx和sumy在初始定义时没有初始化为0,被赋了一个野值