PTA 7-218 数完数个数
一个正整数的真因子是指所有能整除它的正整数(不包括自身)。
一个正整数的所有真因子之和等于其本身则被称为完数。
例如:6=1+2+3,6是完数;
而9不是,1也不是。
求在[m,n]之间的完数的个数。
输入格式:
在一行中输入m和n的值,保证m<=n,并且都是正整数(读者无需考虑)。
输出格式:
在一行中输出个数。
输入样例1:
5 30
输出样例1:
2
输入样例2:
2 5
输出样例2:
0
代码长度限制
16 KB
C (gcc)
时间限制
10000 ms
内存限制
64 MB
其他编译器
时间限制
10000 ms
内存限制
64 MB
代码:
#include <stdio.h>
int main(){
int m, n; //范围
int perft_numb = 0; //完美数
int sum = 0; //因子和
scanf("%d %d", &m, &n);
for(int i = m; i <= n; i++){ //循环范围内的数
sum = 0; //初始化每个数的因子和
for(int j = 1; j < i; j++){ //找真因子
if(i % j == 0)
sum += j;
}
if(sum == i)
perft_numb++; //记录完美数的个数
}
printf("%d", perft_numb);
return 0;
}
解题思路:
step1:循环范围内的每个数
step2:对每个数进行找真因子
step3:判断是否是完美数并记录个数
归属知识点:
循环结构
条件判断