为什么只显示空行?
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");
}
}
}
回答
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的值输出来看一下。
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");
}
}
}
改一下,运行后你自己看看
你的程序里面,
这一句:
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


995