Java 完全数格式
我有一篇关于1-1000之间的完美数的家庭作业,其中一个数等于它的除数之和。我找到了正确的代码来检查一个数字是否是一个完美的数字,并发现这些数字是1,6,28,496(我不知道为什么会包括1,但我老师的例子中也包括了1)。我的问题很简单。我希望的结果是:Java 完全数格式,java,formatting,perfect-numbers,Java,Formatting,Perfect Numbers,我有一篇关于1-1000之间的完美数的家庭作业,其中一个数等于它的除数之和。我找到了正确的代码来检查一个数字是否是一个完美的数字,并发现这些数字是1,6,28,496(我不知道为什么会包括1,但我老师的例子中也包括了1)。我的问题很简单。我希望的结果是: 1=1 6=1+2+3 28=1+2+4+7+14 496=1+2+4+8+16+31+62+124+248 但我得到的是: 1=1 6=1+2+3+ 28=1+2+4+7+14+ 496=1+2+4+8+16+31+62+124+248+ 最
1=1
6=1+2+3
28=1+2+4+7+14
496=1+2+4+8+16+31+62+124+248
但我得到的是:
1=1
6=1+2+3+
28=1+2+4+7+14+
496=1+2+4+8+16+31+62+124+248+
最后如何排除额外的+ 我的代码是这样的:
private static boolean perfect(int n){
boolean cek=false;
int x=0;
if(n==1)x=1;
for(int i=1;i<n;i++){
if(n%i==0)
x+=i;
}
if(x==n)cek=true;
return cek;
}
public static void main(String[] args) {
for(int i=1;i<1000;i++){
if(perfect(i)){
if(i==1)
System.out.println(i+"\t = "+i);
else{
System.out.print(i+"\t = ");
for(int j=1;j<i;j++){
if(i%j==0)
System.out.print(j+"+");
}
System.out.println("");
}
}
}
}
private静态布尔完美(int n){
布尔值cek=false;
int x=0;
如果(n==1)x=1;
对于(int i=1;i,因为这是作业,所以我将给出一个提示,简单地说,如果不是循环的第一次迭代,只打印+
。这很容易测试,我会让你弄清楚
编辑,附带一个额外提示:您可能需要尝试打印+
的确切位置。请尝试以下操作
boolean first = true;
for(int j=1;j<i;j++){
if(i%j==0)
if(!first)
System.out.print("+"+j);
else{
first = false;
System.out.print(j);
}
}
boolean first=true;
对于(intj=1;jDo)你真的需要每次都检查(i==1)
吗?哈哈哈,不,我想这有点低效。我本来可以一开始就把它打印出来。是的,我会把它修好的。另一个答案把它弄坏了(嗯,不完全是这样)对我来说。如果j==1,我只打印j,否则我只打印+j。谢谢你的提示。没问题,很高兴它成功了。我是一名前教师,所以如果可能的话,我喜欢给出提示,但大多数时候人们都会为你写代码。对于未来,如果你在帖子中明确要求提示,我想大多数人都会尊重这一点。