解题思路:首先要理解什么是完数,然后使用双重循环,外层循环用来遍历N以内的所有数,内循环用来判断是不是因子,并将所有因子求和与本身对比,判断是否是完数
注意事项:没次求完因子之和后记得将s清理以便于下一个数的判断
参考代码:
#include<stdio.h>
int main()
{
int N,i,j,s,k;
int a[100];
scanf("%d",&N); //接收N
for(i=1;i<=N;i++)//利用for循环,遍历N内所有数据
{
s=0;//变量s用来保存因子的和
k=0;//k是数字a的下表计数
for(j=1;j<i;j++)//遍历比i小的所有数
{
if(i%j==0) //对比i小的数进行取余处理,判读是否是i的因子
{
s+=j; //如果满足是i的因子,将其累加求和
a[k++]=j;//并保存该因子到数组中
}
}
if(s==i) //判断所有的因子之和与本身的值是否相等,若相等则输出
{
printf("%d its factors are ",i);
for(j=0;j<k;j++) //用for循环遍历数组中保存的因子并打印
{
printf("%d ",a[j]);
}
printf("\n");
}
}
return 0;
}
0.0分
2 人评分
C语言考试练习题_保留字母 (C语言代码)浏览:694 |
数组输出 (C语言代码)浏览:767 |
九宫重排 (C++代码)浏览:2160 |
【金明的预算方案】 (C++代码)浏览:940 |
简单的a+b (C语言代码)浏览:607 |
C语言程序设计教程(第三版)课后习题7.2 (C语言代码)浏览:542 |
2003年秋浙江省计算机等级考试二级C 编程题(2) (C语言代码)浏览:594 |
C语言程序设计教程(第三版)课后习题8.5 (C语言代码)浏览:578 |
1642题解浏览:716 |
1113题解浏览:791 |