解题思路:先判断要求范围内的完数。在判断的过程中,如果是完数,按格式打印一下这个数,然后找到该完数的每一个因子(除去本身)并按格式打印每一个因子;如果不是完数,就继续判断下一个数。

注意事项:1.按格式的打印输出要有一个变量值来辅助处理换行

              2.打印输出要注意空格

参考代码:

#include<stdio.h>
#pragma warning(disable:4996);
void test27(int num)
{
	int b = 0;//防止第一次输出换行
	for(int i=2;i<=num;i++)//先判断完数
	{
		int sum = 1;
		for (int j = 2;j < i;j++) 
		{
			if(i%j==0)
			{
				sum += j;//累加,判断因数和是不是等于本身,是为完数,不是就判断下一个数
				
			}
			
		}

		
			if (sum == i)//如果是完数,再找完数的因数
			{
				if (b)printf("\n");//防止第一次输出换行(先为假)

				printf("%d its factors are", i);
				b = 1;//让后面每个完数找完因数后换行(再为真)
				for (int a = 1;a < i;a++)//找完数的因数
				{
					if (i % a == 0)
					{
					 printf(" %d", a);//打印每一个完数的因数

					}
				}
			}
		
		

	}
}
int main()
{
	int a = 0;
	scanf("%d",&a);//输入要判断的范围
	test27(a);
	return 0;
}


点赞(0)
 

0.0分

1 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 0 条评论

暂无评论