问题描述 一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如,6的因子为1、2、3,而6=1+2+3,因此6是“完数”。预置代码 #include<stdio.h>void Solve(int);/*fact函数如果整数n是完数,则返回1;否则返回0。把n的每个因子放在一维数组a中。*len是数组a的长度。*/int fact(int n, int a[], int *len);int main(){int n;while(scanf("%d", &n)!=EOF){Solve(n);}return 0;}输入 测试数据有多个,每个测试数据是一个单独的整数n。输出 对每个测试数据n,(1)如果n是完数,则输出它,并且输出它的因子。输出样式如下Yes, its factors are 1 2 3 每个因子后面都有一个空格。(2)如果不是完数,则输出:No每个测试数据的输出占单独的一行。输入样列 6100输出样例 Yes, its factors are 1 2 3 No
1 回答
qq_遁去的一_1
TA贡献1725条经验 获得超7个赞
void Solve(int num)
{
int sum = 0;
int i = 0;
if (num == 0)
{
printf("No\n");
}
else if (num == 1)
{
printf("Yes, its factors are %d\n", num);
}
else
{
for (i = 1; i < num; i++)
{
if (num % i == 0)
{
sum += i;
}
}
if (sum == num)
{
printf("Yes, its factors are ");
for (i = 1; i < num; i++)
{
if (num % i == 0)
{
printf("%d ", i);
}
}
printf("\n");
}
else
{
printf("No\n");
}
}
}
int main() //链表建立测试
{
int n;
while(scanf("%d", &n) != EOF)
{
Solve(n);
fflush(stdin); //防止输入字母造成死循环
}
return 0;
}
添加回答
举报
0/150
提交
取消