C++求完数,哪错了?高手指教一下,谢谢

#include<iostream>#include<cmath>usingnamespacestd;//--------------------------------... #include<iostream>
#include<cmath>
using namespace std;
//--------------------------------------------------------------------------------
int main(){
int sum=0;
double sqrti;
for(int i=1;i<=1000;++i)
sqrti=sqrt(i*1.0);
for(int j=1;j<sqrti;++j){
if(i%j==0)
sum+=j;
}
if(sum==i)
cout<<sum<<endl;
return 0;
展开
 我来答
jaycnvip
2009-01-20 · TA获得超过767个赞
知道小有建树答主
回答量:998
采纳率:100%
帮助的人:645万
展开全部
我稍微整理一下你的源程序:
include<iostream>
#include<cmath>
using namespace std;
int main(){
int sum=0;
double sqrti;
for(int i=1;i<=1000;++i)
sqrti=sqrt(i*1.0);
for(int j=1;j<sqrti;++j){
if(i%j==0)//这个变量i没有声明,编译器会报错
sum+=j;
}
if(sum==i)//这个变量i没有声明,编译器会报错
cout<<sum<<endl;
return 0;
}

按你的意思,我改动如下:
int main(){
int sum=0;
double sqrti;
for(int i=1;i<=1000;++i){
sqrti=sqrt(i*1.0);
for(int j=1;j<sqrti;++j){
if(i%j==0)
sum+=j;
}
if(sum==i)
cout<<sum<<endl;
}
return 0;
}
希望能够帮助到你~
niinor
2009-01-20 · TA获得超过2246个赞
知道小有建树答主
回答量:2047
采纳率:0%
帮助的人:1360万
展开全部
main函数最后没有}?
你在你所有语句块都加好大括号了再发上来.感觉你逻辑混乱,看程序不懂你的循环是怎么回事.j的循环是嵌套在i循环内的?如果是,为什么没有{}。如果不是,请参阅C++作用域相关文章...i的作用域只限于i的for循环内部,再后面的语句中就没有i这么一说了.要么你就在循环体外,sum=0那个位置,int i = 0,j = 0;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友edd6353bd
2009-01-20 · TA获得超过1162个赞
知道小有建树答主
回答量:2513
采纳率:0%
帮助的人:1426万
展开全部
求完数代码如下,下面能打印10000以内的完数,你自己看看哪里错了,你代码sum=0要放在循环内部。
#include <stdio.h>
int main()
{
int n = 10000;
int r,j,i;
for(i=1;i<n; i++)
{
r = 0;
for(j=1;j <i; j++)
{
if(i%j == 0) r = r + j;
}

if(r == i)
{
printf("the result is: %d\n", r);
r = 0;
}
}
return 0;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
yl62803112
2009-01-20 · TA获得超过416个赞
知道小有建树答主
回答量:694
采纳率:100%
帮助的人:210万
展开全部
楼主这是我编的程序:
#include <iostream>
using namespace std;

int main()
{
int sum, k;

for ( int i = 1; i <= 1000; i++ ){
sum = 0;
for ( int j = 1; j < i; j++ )
if ( i % j == 0 ) sum += j;

if ( sum == i )
cout << sum << endl;
}

return 0;
}
楼主你少了括号,还有sum应在for语句中初始化,这样能保证sum每次是从0开始加。最后j<sqrti应该不对,比如当i=100是,j= 50也应该是它的因子,如果像你给的条件那样j最大为10.
输出结果:
6
28
496
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式