解题思路:
看题得:先求得完数的因子,再将因子求和才能判断是否为完数;所以首先要用双循环求得数的所有因子,用取余的办法即可;在取得因子后再求因子总和;用if进行判断;要输出题中?? its factors are??形式且不包含本身,则想到一个数的最大因子(除去他本身)不会大于它的一半,则在和满足情况下,在对所有因子进行一个判断,输出每个符合要求的值即可
注意事项:
sum需要在每次内部循环完成时进行清零,否则将导致程序出错
参考代码:
#include<stdio.h>
int main()
{
int i,n,m;//
int sum;
scanf("%d",&n);
for(i=1;i<=n;i++)
{
sum=0; //每次内循环完成都要清零
for(m=1;m<i;m++) //内层循环求得因数
{
if(i%m==0)
{
sum=sum+m; //因子求和
}
}
if ( sum == i )
{
int k;
printf( "%d its factors are ", i );
for ( k = 1; k <=i/2; k++ ) //一个数的最大因子(除去他本身)不会大于它的一半
{
if ( i % k == 0 )
{
printf( "%d ", k );
}
}
printf( "\n" );
}
}
return 0;
}
0.0分
0 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复