C语言求 1000以内的完全数

问题O:1000以内的完全数题目描述一个数如果恰好等于它的因子之和,这个数就称为"完数"。例如6=1+2+3.编程找出1000以内的所有完数。本题要求使用函数实现,函数原... 问题 O: 1000以内的完全数
题目描述
一个数如果恰好等于它的因子之和,这个数就称为"完数"。例如6=1+2+3.编程 找出1000以内的所有完数。
本题要求使用函数实现,函数原型
void startJudge(int value) {
if( Judge(value) ) {
printf("%d ",value);
}
}
输入
一个sum (sum < 1000) ,表示测试数据的组数,接着sum行,每一行表示一个测试数据n,表示要求1到n以内的完数,1在这里不算是完数。
输出
范围内的完数,如果范围内没有完数请输出none,每组测试数据空出一行。
样例输入
2
1
6
样例输出
none
6

我是这样写的,没有按照那个函数原型,想问一下哪里错了
#include <stdio.h>
int wanquanshu()
{
int n,i,k,sum;
while(scanf("%d",&n)!=EOF)
{
for(i=1; i<=n; i++)
{
for(k=1; k<i; k++)
{
sum=0;
if(i%k==0)
{
sum=sum+k;
}
}
if(sum==i)
{
printf("%d\n",i);
}
}
}
return 0;
}
void main()
{
wanquanshu();
}
展开
 我来答
庄政警
2017-12-11 · TA获得超过9916个赞
知道大有可为答主
回答量:1113
采纳率:94%
帮助的人:888万
展开全部

重置sum的位置错了,放到内循环的开头:

#include <stdio.h>
int wanquanshu()
{
int n, i, k, sum;
while (scanf("%d", &n)!=EOF)
{
for (i=1; i<=n; i++)
{
sum=0;   //放在这里
for (k=1; k<i; k++)
{

if (i%k==0)
{
sum=sum+k;
}
}
if (sum==i)
{
printf("%d\n", i);
}
}
}
return 0;
}
void main()
{
wanquanshu();
}
追问
怎样不输出1?还有大大能不能把这个题的答案发给我?我的这串代码还是有问题
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
我的视频乐园
2020-12-24 · TA获得超过117个赞
知道答主
回答量:127
采纳率:0%
帮助的人:25.4万
展开全部

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式