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

#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;

我稍微整理一下你的源程序:
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;
}
希望能够帮助到你~
温馨提示:内容为网友见解,仅供参考
第1个回答  2009-01-20
main函数最后没有}?
你在你所有语句块都加好大括号了再发上来.感觉你逻辑混乱,看程序不懂你的循环是怎么回事.j的循环是嵌套在i循环内的?如果是,为什么没有{}。如果不是,请参阅C++作用域相关文章...i的作用域只限于i的for循环内部,再后面的语句中就没有i这么一说了.要么你就在循环体外,sum=0那个位置,int i = 0,j = 0;
第2个回答  2009-01-20
求完数代码如下,下面能打印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;
}
第3个回答  2009-01-20
楼主这是我编的程序:
#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

C++求完数,哪错了?高手指教一下,谢谢
我稍微整理一下你的源程序: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)\/\/这...

C++完数问题!大虾帮忙啊
for(i=1;i<=x,i++)这个for循环里面你那个分号你写成逗号了,应该这样for(i=1;i<=x;i++)但是你这个判断完数的条件有错啦!i<=x 而是i<x,因为完数的意思是除本身以外的全部因子相加=这个数的本身!

求完数的,c++代码,哪里错了?
} 我的是c编的,c++的我有的看不懂

关于c++完数的一段代码,哪错了?
sum=0;j<i;){if(i % j==0)sum +=j;j ++;}if(sum==i)\/\/子函数返回的不要是i,你返回i,主函数里if就始终成立return 1;\/\/是完数返回1,否则返回0elsereturn 0;}int main(){ for(int i=1;i<1000;i++){if(wanshu(i)){cout<<i<<",...

C++程序 要求输出1000以内的完数
if(n\/i-int(n\/i)==0)错了。1、if(n\/i-int(n\/i)==0)这个改为if(n%i == 0)2、找到一个完数以后,没有把s初始化为0,所以后面肯定会出错。在n=n+1;后面加s=0。C++不仅拥有计算机高效运行的实用性特征,同时还致力于提高大规模程序的编程质量与程序设计语言的问题描述能力。

C++求完数
所谓“完数”是指它的所有小于它本身的因子之和(即不包括本身)等于它本身的数。如:6是一个完数:6=1+2+3。要知道1不是完数,而你的程序定义的m是从1开始求,当然会出错咯,还有就是第二个循环i不应该等于m,应该小于m。还有一点就是,这样的程序效率不高,因为只要比到一半就行了……下面...

求1000以内的完数,c++程序,这个程序哪里错了?
include <iostream> int main(){ int x,m,sum;sum=0;for(x=2;x<=1000;x++){ sum=0;for(m=1;m<x;m++){ if(x%m==0)sum+=m;} if(x==sum)std::cout<<x<<std::endl;} return 0;} 这个应该能行,你试试

c++求1000以内完数的算法,不知道我哪里错了,什么都没有输出,求大神
把两个for(i=0;i<n;i++)循环中的i<n都改成i<n-1……

求c++1000以内完数 请问一下 我的程序哪里错了 谢谢了。
include<iostream> using namespace std;int main(){ int n,a,b;b=0;for(n=2;n<=1000;n++){ for(a=1;a<n-1;a++){ if(n%a==0)b=b+a;} if(b==n)cout<<n<<endl;b=0;} return 0;} 这样就好。

C++ 求1000之内的完数 这个哪里错了?
void main(){ int i, j;int c[100];cout<<"1000以内的完数有:"<<endl;for (i=1;i<=1000;i++){ int e = 0,b = 0;for (j=1;j<i;j++){ if (i%j==0){ c[e]=j;b=b+j;e++;} } if (b == i){ cout<<i<<" : ";for (j=0;j<e;j++){ cout<<c[j]...

相似回答