我试图通过让用户输入数字来打印出数字是否完美。例如,当我输入一个像6这样的完美数字时,它告诉我它不是一个完美的数字而且无法弄清楚为什么。我的最终代码需要打印出来,如6 = 1 + 2 + 3.但我还没有那么远。
Scanner scanner = new Scanner(System.in);
System.out.println("Enter a positive integer: ");
int n = scanner.nextInt();
int sum = 0;
for(int i = 1;i<n;i++){
if(n%2==0)
sum += i;
}
if(sum==n){
System.out.println(n + " is a positive number");
}
else {
System.out.println(n + " is not a positive number");
}
答案 0 :(得分:1)
if(n%2==0)
应该是
if(n%i==0)
否则,对于偶数1
,您的总和将是n-1
到n
的所有数字的总和,对于奇数0
,您的总和将是n
。
答案 1 :(得分:0)
您的代码如下:
Scanner scanner = new Scanner(System.in);
System.out.print("Enter a positive integer: ");
int n = scanner.nextInt();
int sum = 0;
for(int i = 1;i<n;i++){
if(n%i==0)
sum += i;
}
if(sum==n){
System.out.println(n + " is a perfect number");
System.out.print(n+" = ");
for(int i=1;i<n;i++)
if(n%i==0) System.out.print((i!=1?" + ":" ") + i);
}
else {
System.out.println(n + " is not a perfect number");
}
在不使用三元运算符的情况下格式化输出:
System.out.println(n + " is a perfect number");
System.out.print(n+" = ");
for(int i=1;i<n;i++)
if(n%i==0) {
if (i==1)
System.out.print(i);
else
System.out.print(" + " + i);
}
答案 2 :(得分:0)
检查一下。 :)
public static String isPerfect(int num){
int product = 1;
for (int x=1; x<num; x++){
product *= x;
if (product == num){
return num + " is a perfect number";
}
}
return num + " is a not perfect number";
}