在大一的学习中,不少同学会在pta上做到老师安排的作业找完数,但是部分同学可能还不是特别精通C语言,下面是简单的两种方法。
#include <stdio.h>
int main()
{
int m, n;
int i, j;
int s, p, flag = 0; // 定义三个整型变量s, p, flag。s用于存储数字i的所有因子的和,p用于存储某数字的累加和,flag表示完数,初始值为0
scanf("%d %d", &m, &n);
// 遍历m到n,检查这个范围内的每一个数是否为完数
for (i = m; i <= n; i++)
{
s = 0; // 在每次循环开始前,将s重置为0
// 遍历1到i/2,用于找出数字i的所有因子
for (j = 1; j <= i / 2; j++)
{
// 如果j是i的因子(即i能被j整除)
if (i % j == 0)
// 将j加到s中,即把j作为数字i的一个正因子
s += j;
}
// 如果s等于i(i的所有因子的和等于i本身)
if (s == i)
{
flag = 1; // 设置flag为1,表示找到了一个完数
printf("%d = ", i); //