为了账号安全,请及时绑定邮箱和手机立即绑定

求大佬帮忙使用C语言函数写一个关于完数的代码!具体描述如下!

求大佬帮忙使用C语言函数写一个关于完数的代码!具体描述如下!

天涯尽头无女友 2021-07-02 11:07:47
问题描述 一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如,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;
}



查看完整回答
反对 回复 2021-07-04
  • 1 回答
  • 0 关注
  • 317 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信