c++求1000以内的完数完数的算法,不知道我哪里错了,什么都没有输出,求大神

编程找出1000以内的所有完数
#include &stdio.h&#include &conio.h&main(){  static int k[10];  int i,j,n,s;  for(j=2;j&1000;j++)  {    n=-1;    s=j;    for(i=1;i&j;i++)    {      if((j%i)==0)      {        n++;        s=s-i;        k[n]=i;      }    }    if(s==0)    {      printf(&%d is a wanshu&,j);      for(i=0;i&=n;i++)      printf(&%d,&,k[i]);        printf(&%d\n&,k[n]);    }  }  getch();}为什么不可以把 printf(&%d,&,k[i]);        printf(&%d\n&,k[n]);这两句转换成printf(&%d\n&,k[i]);呢?我认为k[0]应该输出1的啊.为什么输不出来呢?
10-03-02 &
#include &stdio.h&&br&void main()&br&{&br&&&br&&int n_z,n_f,n_0;&br&&n_z = n_f = n_0 = 0;&br&&while (scanf(&%d&,&a))&br&&{&br&&&if (a & 0)&br&&&&n_z++;&br&&&else if (a == 0)&br&&&&n_0++;&br&&&else&br&&&&n_f++;&br&&}&br&&printf(&正数%d,零:%d,负数:%d\n&,n_z,n_0,n_f);&br&}输入整数,输入非数字的时候退出输入,显示结果
请登录后再发表评论!#include &stdio.h&
void main()
int n=1000,i,j,a,b=0;
for(j=2;j&=n;j++)
for(i=1;i&j;i++)
if(a==0) b=b+i;
printf(&%d its factors are &,j);
for(i=1;i&j;i++)
if(a==0) printf(&%d &,i);
为什么没有结果输出?哪里错了呢。。。求指导------解决方案--------------------改好了C/C++ code
#include &stdio.h&
void main()
int n=1000,i,j,a;
for(j=2;j&=n;j++)
int b = 0;
//定义局部变量
for(i=1;i&j;i++)
printf(&%d its factors are &,j);
for(i=1;i&j;i++)
//这里是j不是n
printf(&%d &,i);
printf(&\n&);
------解决方案--------------------
for(j=2;j&=n;j++)
{后面加上 b=0;
12345678910
12345678910
12345678910 上一篇:下一篇:文章评论相关解决方案 12345678910 Copyright & &&版权所有C++ 一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如6=1+2+3.编程找出1000以内的所有完数。 我的错哪里呢
40heyong1991]
发布时间: 17:18:07
编辑:www.fx114.net
本篇文章主要介绍了"C++ 一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如6=1+2+3.编程找出1000以内的所有完数。 我的错哪里呢
40heyong1991]",主要涉及到C++ 一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如6=1+2+3.编程找出1000以内的所有完数。 我的错哪里呢
40heyong1991]方面的内容,对于C++ 一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如6=1+2+3.编程找出1000以内的所有完数。 我的错哪里呢
40heyong1991]感兴趣的同学可以参考一下。
#include&iostream.h&
void&main()
int&i,j,sum=0,n=0,a[100];
for(i=2;i&=1000;i++)
for(j=1;j&i;j++)
if(i%j==0)
if(i==sum)
cout&&i&&"为完全数"&&
}转新手乐园。
这样的程序,断点后单步调试一下,必备的技能。主要是sum和n没有按数清零:
#include&iostream&
using&namespace&
int&main(int&argc,&char*&argv[])
int&i,&j,&sum&=&0,&n&=&0,&a[100];
for(i&=&2;&i&&=&1000;&i++)
for(j&=&1;&j&&&i;&j++)
if(i&%&j&==&0)
a[n++]&=&j;
if(i&==&sum)
cout&&&&i&&&&"为完全数"&&&&
}引用&2&楼&&的回复:主要是sum和n没有按数清零:
C/C++&code
#include&iostream&
using&namespace&
int&main(int&argc,&char*&argv[])
&&&&int&i,&j,&sum&=&0,&n&=&0,&a[100];
&&&&for(i&=&2;&i&&=&1000;&i++)
&&&&&&……
sum的不断增加让你的结果出错。
但是n值的不断增加,就会使得&n&99;
数组越界结果不可知3楼正解,另外补充一点就是楼主返回类型最好不要是void型的main函数,用Int型的好一点,不然容易产生未知错误。该回复于 10:39:24被版主删除三楼正解,补充一点:写C++程序尽量用#include&iostream&&using&std::......而不是#include&iostream.h&google一下完数。
本文标题:
本页链接:C++输出1000内所有完数,求指导。_c语言吧_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:501,494贴子:
C++输出1000内所有完数,求指导。收藏
以下是我编的,要求使用bool函数,不知道自己错在哪。。。求指导nclude&iostream&bool isPerfectNumber(int n){
int total,i;
for(i=1,total=0;i&=n;i++){
if(n%i==0){
return total==n;
int main(){
for(n=2;n&=1000;n++){
if(isPerfectNumber(n)){
cout&&n&&" ";}
c语言一般需要4-8周,就可以掌握.4个月=两年的工作经验,月薪过万.c语言的费用根据培训课时定,免费试听编程课程,名师授课,手把手传教.
逻辑错误 第五行 for (i=1, total=0; i&n; i++)
//完数的因数求和不包含其本身另外 能用++i就别用i++
影响效率;
尽量养成良好的编程规范,调试的时候方便查找错误。
登录百度帐号推荐应用
为兴趣而生,贴吧更懂你。或}

我要回帖

更多关于 输出1000以内的完数 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信