内容:判断亲和数
目的:掌握循环与if语句
程序代码:
/*
* 程序的版权和版本声明部分:
* Copyright (c) 2013, 烟台大学计算机学院
* All rights reserved.
* 文件名称:test.cpp
* 作 者:匡效国
* 完成日期:2013 年 4 月 10 日
* 版 本 号:v1.0
*
* 对任务及求解方法的描述部分:
* 输入描述:输入数据第一行包含一个数M,接下有M行,每行一个实例,包含两个整数A,B; 其中 0<=A,B<=99999。
* 问题描述:如果a的因子和等于b,b的因子和等于a,且a≠b,则称a,b为亲和数对。
* 比如220的所有真约数(即不是自身的约数)之和为:
* 1+2+4+5+10+11+20+22+44+55+110=284。
* 284的所有真约数和为:
* 1+2+4+71+142=220。
* 程序输出:见下图
* 问题分析:略
* 算法设计:略
*/
#include <iostream>
using namespace std;
int main()
{ int M,A,B,i,j,sum1,sum2;//i和j用来循环,sum1和sum2用来记录A和B的因子的和cin>>M; for(i=1;i<=M;i++)//循环输入M次 { sum1=0; sum2=0; cin>>A>>B; for(j=1;j<A;j++)//循环A次得到A的因子的和sum1 { if(A%j==0) sum1+=j; } for(j=1;j<B;j++)//循环B次得到B的因子的和sum2 { if(B%j==0) sum2+=j; } if(sum1==B&&sum2==A)//如果sum1=sum2,说明A与B为亲和数,输出“Yes” cout<<"YES"<<endl; else//若sum1!=sum2,输出“No” cout<<"NO"<<endl; } return 0;
}
运行结果:
感悟:熟能生巧
题目来源:http://acm.sdut.edu.cn/sdutoj/problem.php?action=showproblem&problemid=1221