黑马程序员技术交流社区
标题: 程序运行结果与设计想法不一样,帮忙找问题!!! [打印本页]
作者: FlyTrem 时间: 2014-3-16 09:20
标题: 程序运行结果与设计想法不一样,帮忙找问题!!!
本帖最后由 FlyTrem 于 2014-3-23 17:39 编辑
帮忙找出问题在哪!!!!
编程找出999以内的完数。完数如:6=1+2+3.
下面是我的代码:
#include<stdio.h>
int main()
{
int sum = 0, i, j;
//历遍1到998所有的的整数
for ( i = 1 ; i < 999 ; i++)
{
//历遍小于 (i /2),大于0的所有整数
for( j = 0 ; j <= ( i / 2 ) : i++ )
if ( i % j == 0)
//求所有能被 i 整除数的和
sum = sum + j;
//如果sum和n的值相等
if ( sum == n)
printf("%d",n);
}
return 0;
}
作者: keycola 时间: 2014-3-16 10:23
这是你的代码:
#include<stdio.h>
int main()
{
int sum = 0, i, j;
//历遍1到998所有的的整数
for ( i = 1 ; i < 999 ; i++)
{
//历遍小于 (i /2),大于0的所有整数
sum = 0; //在这里加上一句,对sum 清空
for( j = 1 ; j <= ( i / 2 ) : j++ ) // j可以从1开始, 后面i++ 改为 j++
if ( i % j == 0)
//求所有能被 i 整除数的和
sum = sum + j;
//如果sum和n的值相等
if ( sum == i) // n没值 , n也没定义,但可以说是 i, 改为i
printf("%d",i);
}
return 0;
}
不知道你明白了没
作者: 董月峰 时间: 2014-3-16 10:33
如果一个数恰好等于它的因子之和,则称该数为“完全数”。就是楼主所说的完数。
也就是说完数是一种特殊的非质数。
判断方法应该是
1-999内的非质数数组中,有多少 非质数是完全数【用i遍历1-999, if i=因子数和,printf这个i】
楼主的错误:
1.算法错误
2.条件判断用错了,if(==n)n是什么都没定义,实在不行你把n写成个完数枚举也可以。
作者: FlyTrem 时间: 2014-3-16 11:25
嗯 谢谢 明白问题在哪了
作者: FlyTrem 时间: 2014-3-16 11:27
嗯嗯。感谢给出答复!
作者: 脸皮猴 时间: 2014-3-16 11:49
#include<stdio.h>
int main()
{
int sum = 0, i, j;
//历遍1到998所有的的整数
for ( i = 1 ; i < 999 ; i++)
{
//历遍小于 (i /2),大于0的所有整数
for( j = 0 ; j <= ( i / 2 ) : i++ ) // i++改为j++
if ( i % j == 0)
//求所有能被 i 整除数的和
sum = sum + j;
//如果sum和n的值相等
if ( sum == n) // 把n改为i
printf("%d ",n); // 应该打印的时i或者sum,不是n,还有打印一个最好再加个空格将各个数分开!
//打印完毕后,你这边还需要把sum清0才行!不然sum会一直累加!
//清零sum
sum = 0;
}
return 0;
}
作者: FlyTrem 时间: 2014-3-16 13:25
Thank you!!谢谢!!!!!
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |