c++编程:计算正整数m到n之间所有完数之和。

(1)主函数功能:从键盘输入两个整数m、n(m>0,n>0,m<n),通过调用子函数判断出m到n之间所有完数,计算所有完数之和并输出结果。(2)子函数功能:定义有返回值函... (1) 主函数功能:从键盘输入两个整数m、n(m>0, n>0, m<n),通过调用子函数判断出m到n之间所有完数,计算所有完数之和并输出结果。
(2) 子函数功能:定义有返回值函数,实现判断正整数是否为完数的功能。(完数是指:该数所有因子(不含自身)之和等于该数,如28=1+2+4+7+14)。
自己编了一下是这样的,但是输出的值是0

#include<iostream>
using namespace std;
int wan(int m,int n)
{ int a,i,f;
for(a=m;a<=n;a++)
{ f=0;
for(i=m;i<a;i++)
{ if(a%i==0)
f=f+i;
}
if(f==a)
return 1;
else
return 0;
}
}
int main()
{ int i,sum=0,m,n;
cout<<"请依次输入数字m,n(n>m>0):"<<endl;
cin>>m>>n;
for(i=m;i<=n;i++)
{if (wan(m,n)==1)
sum+=i;
}
cout<<m<<"~"<<n<<"之间所有完数之和为:"<<sum<<endl;
}
展开
 我来答
听不清啊
高粉答主

2017-04-06 · 说的都是干货,快来关注
知道顶级答主
回答量:7.8万
采纳率:89%
帮助的人:1.9亿
展开全部

#include<iostream>

using namespace std;

int wan(int n)

{int i,f=0;

for(i=1;i<=n/2;i++)

if(n%i==0)f=f+i;

return(f==n);

}

int main()

{   int i,sum=0,m,n;

cout<<"请依次输入数字m,n(n>m>0):"<<endl;

cin>>m>>n;

for(i=m;i<=n;i++)

{if (wan(i))

sum+=i;

}

cout<<m<<"~"<<n<<"之间所有完数之和为:"<<sum<<endl;

return 0;

}

有个人叫李杰
2018-04-13
知道答主
回答量:3
采纳率:0%
帮助的人:3124
引用听不清啊的回答:
#include<iostream>
using namespace std;
int wan(int n)
{int i,f=0;
for(i=1;i<=n/2;i++)
if(n%i==0)f=f+i;
return(f==n);
}
int main()
{ int i,sum=0,m,n;
cout<<"请依次输入数字m,n(n>m>0):"<<endl;
cin>>m>>n;
for(i=m;i<=n;i++)
{if (wan(i))
sum+=i;
}
cout<<m<<"~"<<n<<"之间所有完数之和为:"<<sum<<endl;
return 0;
}

展开全部
第一个for循环条件应该是i<n,而不是n/2
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式