c语言求2到1000内的所有完数【在线求各位赐教】

完数即为该数所有【真因子】(注意,是真因子之和)如6=1+2+3.我写的程序,麻烦看看那里错了#include<stdio.h>voidmain(){inta,b,c,s... 完数即为该数所有【真因子】(注意,是真因子之和)如6=1+2+3.
我写的程序,麻烦看看那里错了

#include <stdio.h>
void main ()
{
int a,b,c,s;
for(a = 2;a< =1000;a++)
for(b = 1;b< a;b++)
for(c=1;c<b;c++)
if((a % b == 0) &&(b%c!=0))
s=0;
s= s+b;
if(s == a)
printf("%d\n",a)
}
应该是for循环那里错了
展开
 我来答
伪WOWER帝
2019-02-25 · TA获得超过1081个赞
知道答主
回答量:169
采纳率:90%
帮助的人:37.3万
展开全部
#include<stdio.h>
int main()
{ int a,i,i1,sum=0;
scanf("%d",&a);//输入一个计算的范围数据
for(i=1;i<=a;i++)//范围数据累加循环
{
for(i1=1;i1<i;i1++)//完全数不包含本身所以i1<i
{
if(i%i1==0)//mod余为0
{
sum=sum+i1;//累加结果
}

}
if(sum==i)//判断是否是完全数
{
printf("%d 是完全数,分别由",sum);//输出
for(i1=1;i1<sum;i1++)
{
if(sum%i1==0)
printf(" %d",i1);
}
printf(" 这些数组成\n");

}
sum=0;
}
return 0 ;
}

//=============以下是根据你的源码改动一了下,对比一下就知道哪错了============
/*
#include <stdio.h>
void main () 
{
int a,b,s=0;
for(a=2;a<=1000;a++) 
{
for(b=1;b<a;b++)
{
if(a%b==0)
s=s+b;
}
if(s==a) 
printf("%d\n",s);
s=0;//这里s必须置0,否则再次循环,s初始值就是上次的值。
}
return 0;
}
*/

Ryos_Rios
推荐于2018-04-23
知道答主
回答量:55
采纳率:0%
帮助的人:36.1万
展开全部
#include <stdio.h>
main()
{
int i; int is(int n); /*is()函数的作用是判断n是否为完数*/
for(i=2; i<=1000; i++)
if(is(i)) /*返回真值为完数,输出它*/
printf("%d ",i);
}
int is(int n)
{
int i,sum;
sum=0;
for(i=1;i<=n/2;i++) /*这里n/2的意思是一个数的最大因子不超过它的一半大,没有必要做无谓的运算*/
if(!(n%i)) /*如果n%i等于0(就是说i为n的因子),对其求和*/
sum=sum+i;
if(sum==n)return 1; /*如果其所以因子之和等于其本身,返回真值*/
else return 0;
}

code::blocks已成功编译运行
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
lokily2010
2012-04-18 · TA获得超过284个赞
知道小有建树答主
回答量:776
采纳率:100%
帮助的人:583万
展开全部
main()
{
  int i,j,sum;
  for(i=2;i<1000;i++)
  {
  sum=0;
  for(j=1;j<=i/2;j++)
  {
if(i%j==0)
   sum=sum+j;
}
  if(sum==i)
  printf("%4d",i);
  }
}
更多追问追答
追问
请不要复制~~网上的程序我看过了,都是求因子的,不是真因子。。。
追答
呵呵,我还真不知道什么是完数,所以去查,正好看它有代码,以为你有用。。。。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
fu72469411
2012-04-18
知道答主
回答量:6
采纳率:0%
帮助的人:6.2万
展开全部
#include <stdio.h>
#define M 1000

void main () {
int i,j,sum;
for(i = 2;i < M;i++) {
sum = 0;
for(j = 1;j < i;j++)
if(i % j == 0)
sum += j;
if(sum == i) printf("%d ",sum);
}
printf("\n");
}
追问
这个不对
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
k629520
2012-07-08
知道答主
回答量:9
采纳率:0%
帮助的人:22.4万
展开全部
以上都不对!!!
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式