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;
} 展开
(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;
} 展开
2个回答
引用听不清啊的回答:
#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;
}
#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
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询