解题思路:

指针形式解法(怕自己忘了这一种解决思路,写个帖子)

参考代码:

#include<stdio.h>
void main()
{
	int i,j,n;                //定义大小循环指标,定义参数n
	scanf("%d",&n);           //输入参数n
	for(i = 6; i <= n/2; i++)   //可以从6开始到n/2,减少运行时间
	{
		int a[100]={0};       //虽然定义32个存储空间就可以,但运行过大会导致数据丢失,扩大内存到100
		int *p = a;           //采用指针进行数据的读取
		for (j = 1; j < i; j++)    //小循环存储因子的和以及因子
		{
			if (i % j == 0)
			{
				*++p = j;      //数组a[1]开始存储因子
				a[0] += j;     //数组a[0]存储因子总和
			}
		}
		if(a[0] == i)          //判断是否为完数
		{
			printf("%d its factors are",i);
			for(p = &a[1]; *p != 0; p++)
			{
				printf(" %d", *p);
			}
			printf("\n");      //换行输出
		}
	}
}


点赞(0)
 

0.0分

1 人评分

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

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

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

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

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

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

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

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

评论列表 共有 0 条评论

暂无评论