问题描述
一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如,6的因子为1、2、3,而6=1+2+3,因此6就是“完数”。又如,28的因子为1、2、4、7、14,而28=1+2+4+7+14,因此28也是“完数”。编写一个程序,判断用户输入的一个数是否为“完数”。
输入格式:输入只有一行,即一个整数。
输出格式:输出只有一行,如果该数为完数,输出yes,否则输出no。
输入输出样例
样例输入
6
样例输出
yes
思路:就是一个简单的if else的判断,确定是因数之后,在+=起来,最后+=出来的数字和输入数字比较即可。
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanne = new Scanner(System.in);
int n = scanne.nextInt();
int ans = 0;
for (int i = 1; i < n; i++) {
if (n % i == 0) { // 确定因数后
ans += i; // +=起来
}
}
if (ans == n) { // 相等
System.out.println("yes"); // 是完数
}else {
System.out.println("no"); // 不是完数
}
}
}
思路:跟上面没啥区别,就是输出的时候运用到了三目运算符。
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanne = new Scanner(System.in);
int n = scanne.nextInt();
int ans = 0;
for (int i = 1; i < n; i++) {
if (n % i == 0) {
ans += i;
}
}
System.out.println(ans == n ? "yes" : "no"); // 三目运算符判断输出
}
}