转载请标明出处:牟尼的专栏 http://blog.csdn.net/u012027907
Problem A:请写一个程序,给出指定整数范围【a ,b】内所有的完数,一个数如果恰好等于除它本身外的所有因子之和,这个数就称为完数,例如6是完数,因为6=1+2+3。
输入说明:共一组数据,为两个正整数,分别表示a和b(1<a<b<10^5)。
输出说明:指定范围内的所有完数,每个数占一行。
输入样本
1 100
输出样本
6
28
解答:
/*
* 描述: 机试题A解答
* 作者: 张亚超
* 博客: 牟尼的专栏 http://blog.csdn.net/u012027907
* 日期: 2014/7/23
*/
#include "stdio.h"
int main(){
int a,b;
int sum = 0;
scanf("%d%d",&a,&b);
for(int num = a; num <= b; num++){
sum = num;
for(int i = 1; i < num/2+1; i++){ //处理每个数
if(num % i == 0){ //能被i整除
sum -= i; //减去一个因子
}
}
if(sum == 0){
printf("%d\n",num); //输出完数
}
}
return 0;
}
Problem B:请写一个程序,对于一个m行m列的(1<m<10)的方阵,求其每一行,每一列及主对角线元素之和,最后按照从大到小的顺序依次输出。
输入说明:共一组数据,输入的第一行为一个正整数,表示m,接下来的m行,每行