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; 展开
#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; 展开
4个回答
展开全部
我稍微整理一下你的源程序:
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;
}
希望能够帮助到你~
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;
}
希望能够帮助到你~
展开全部
main函数最后没有}?
你在你所有语句块都加好大括号了再发上来.感觉你逻辑混乱,看程序不懂你的循环是怎么回事.j的循环是嵌套在i循环内的?如果是,为什么没有{}。如果不是,请参阅C++作用域相关文章...i的作用域只限于i的for循环内部,再后面的语句中就没有i这么一说了.要么你就在循环体外,sum=0那个位置,int i = 0,j = 0;
你在你所有语句块都加好大括号了再发上来.感觉你逻辑混乱,看程序不懂你的循环是怎么回事.j的循环是嵌套在i循环内的?如果是,为什么没有{}。如果不是,请参阅C++作用域相关文章...i的作用域只限于i的for循环内部,再后面的语句中就没有i这么一说了.要么你就在循环体外,sum=0那个位置,int i = 0,j = 0;
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
求完数代码如下,下面能打印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;
}
#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;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
楼主这是我编的程序:
#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
#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
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询