7-165 输出完数
一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如:6的因子为1,2,3,而6=1+2+3,因此6是完数。输入整数n,编程找出2-n(包括n)之内的所有完数,并按下列格式输出其因子:6 its factors are 1 2 3。
输入格式:
输入整数n(n在2-10000之间)
输出格式:
每行输出一个完数,格式如下:因子间有一个空格隔开,每行结束后也有一空格。
6 its factors are 1 2 3
…输入样例:
10
输出样例:
6 its factors are 1 2 3
#include <stdio.h>
int main(){
// num表示因子数量
int num=0;
// f表示因子数组
int f[500];
int n;
scanf("%d",&n);
for (int i = 2; i <= n; ++i) {
int index = 0;
int temp = 0;
for (int j = 1; j <= i/2; ++j) {
if(i%j==0){
f[index] = j;
temp += j;
num++;
index++;
}
}
if(temp == i){
printf("%d its factors are ",i);
for (int j = 0; j < num; ++j) {
printf("%d ",f[j]);
}
printf("\n");
}
num = 0;
}
return 0;
}
思路
- 对2-n的每个数字进行判断是否为完数,求出每个数的因子存放进数组相加即可,其实代码可以简化,不用存放进数组,直接用一个变量把他们的值相加一样
能完成题目,对此文 章不做简化了(懒),读者可以自行简化。👻👻👻👻👻