为什么只显示空行?
public class FullNumber
{
public static void main (String args)
{
int i,j;
int sum=0;
for(i=1;i<=1000;i++)
{
for(j=1;j<=i/2;j++)
{
if(i%j==0)
sum=sum+j;
if(sum==i)
System.out.print(""+i);
}
System.out.print("\n");
}
}
}
提问者:jezz
等级:资深程序员
发布时间:2010-03-17
悬赏:0
回答
sum = sum + j.是不断的累加,永远不会减小。很明显,当x增加到一定程度时,sum的值会跟它差不多。此时如果有交点。则会有sum==i。可惜不相等。因为可能当i取值为A时。sum的取值为A+1或者A-1。而没达到相交,因为i在外层它再怎么递增下去都不及sum快。所以永运没交点了。
如图
回答者:jezz
等级:资深程序员
时间:2010-03-17
sum是不会等于i的
sum的值远远大于i,你可在sum=sum+j;后面将sum的值输出来看一下。
回答者:jezz
等级:资深程序员
时间:2010-03-17
肯定是没有符合if(sum==i) 这个条件的结果,看你这个程序的目的好像是,找到从1到1000的整数中,所有能被其整除且他们所有的合和其相等的数;
回答者:jezz
等级:资深程序员
时间:2010-03-17
楼主...
你的程序里面,
这一句:
System.out.print(""+i);
没有运行过一次.
只运行了下面这句:
System.out.print("\n");
当然没有显示出来啦

public class FullNumber {
public static void main(String args) {
int i, j;
int sum = 0;
for (i = 1; i <= 1000; i++) {
for (j = 1; j <= i / 2; j++) {
if (i % j == 0){
sum = sum + j;
System.out.println("sum is " + sum);
System.out.println("i is " + i);
}
if (sum == i)
System.out.print("sum == i" + i);
}
System.out.print("\n");
}
}
}
改一下,运行后你自己看看
回答者:jezz
等级:资深程序员
时间:2010-03-17
快到期问题
总积分排行
jezz 资深程序员reward 995
老三 中级程序员reward 65
三剑客 中级程序员reward 60
习羽 初级程序员reward 50
Fiona 初级程序员reward 45
java人 初级程序员reward 40
阿勇 初级程序员reward 35
扣921157070 初级程序员reward 35
155 初级程序员reward 35
haik 初级程序员reward 35