黑马程序员技术交流社区
标题:
求大神进来解决一个问题,谢谢
[打印本页]
作者:
Dance小飞
时间:
2015-1-10 10:50
标题:
求大神进来解决一个问题,谢谢
一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如6=1+2+3. 编程找出999以内的所有完数。
#include<stdio.h>
int main()
{
int a, b, c;
for(a=1; a<=999;a++){
c=0;
for(b=1; b<=a/2; b++)
if(a/b==0)
c+=b;
if(a==c)
printf("%d\n", a);
}
return 0;
}
编译也没出问题,没报错,就是不出结果,谢谢
作者:
皮拉夫大王
时间:
2015-1-10 10:56
a/b==0?为什么不是a%b==0
作者:
mengxingdong
时间:
2015-1-10 13:14
C变量永远为0呢。肯定没有值
作者:
仰望的繁华
时间:
2015-1-10 13:47
a/b==0 和 a%b==0
一个是a=0时成立。
一个是可以整除时成立。
作者:
kenloo
时间:
2015-1-12 08:50
#include <stdio.h>
int main()
{
int a,yinZi,sum;//定义一个要判断是否为完数的目标变量a,要判断是否为a的因子的变量yinZi,以及因子之和sum.
for(a=1;a<1000;a++)//a从1到999自增
{
sum= 0;
for(yinZi=1;yinZi<a;yinZi++)//因子肯定是要小于a的
{
if(a%yinZi==0)//判断a能否被yinZi整除,如果可以,进行求和
{
sum= sum+yinZi;
}
}
if(sum==a)//判断sum的值是否等于a,如果等于a,则a是完数
{
printf("%d ",a);//输出结果
}
}
printf("\n");//为了格式好看,换行
}
作者:
张传宾
时间:
2015-1-12 08:53
/**
* 一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如6=1+2+3. 编程找出999以内的所有完数。(C语言)
*/
#include<stdio.h>
int IsPerfectnum(int n)//构造函数IsPerfectnum,判断n是否为完数
{
int i,s;
s=0;
for(i=2;i<=n/2;++i)//从2到n/2,寻找n的因子
{
if(n%i==0)
{
s=s+i;
}
}
++s;//加上因子1
return s;
}
int main()
{
int IsPerfectnum(int n);
int n;
for(n=2;n<=999;++n)//因为0、1不符合完数定义,故从2开始到999,挨个判断n是否为完数
{
if(n==IsPerfectnum(n))
printf("%d\t",n);//输出完数
}
printf("\n");
return 0;
}
作者:
张传宾
时间:
2015-1-12 08:55
皮拉夫大王 发表于 2015-1-10 10:56
a/b==0?为什么不是a%b==0
你回答的对!
作者:
liu1170486003
时间:
2015-1-12 11:10
楼主你好,
摩除运算%才是判断一个数是否可以被另一个数整除的运算符,a%b==0证明a能被b整除。
所以修改你的内层循环即可.
#include<stdio.h>
int main()
{
int a, b, c;
for(a=1; a<=999;a++){
c=0;
for(b=1; b<=a/2; b++)
if(a%b==0)//修改这里
c+=b;
if(a==c)
printf("%d\n", a);
}
return 0;
复制代码
作者:
haojuncong
时间:
2015-1-12 14:12
if(a/b==0) 改成 if(a%b==0)
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2