您的位置:首页 > 其它

华为OJ 初级:iNOC产品部--完全数计算

2016-07-30 11:17 225 查看
描述
完全数(Perfect number),又称完美数或完备数,是一些特殊的自然数。它所有的真因子(即除了自身以外的约数)的和(即因子函数),恰好等于它本身。例如:28,它有约数1、2、4、7、14、28,除去它本身28外,其余5个数相加,1+2+4+7+14=28。给定函数count(int n),用于计算n以内(含n)完全数的个数。计算范围, 0 < n <= 500000返回n以内完全数的个数。异常情况返回-1 /** *  * 完全数(Perfect number),又称完美数或完备数,是一些特殊的自然数。 * 它所有的真因子(即除了自身以外的约数)的和(即因子函数),恰好等于它本身。 * 例如:28,它有约数1、2、4、7、14、28,除去它本身28外,其余5个数相加,1+2+4+7+14=28。 *  * 给定函数count(int n),用于计算n以内(含n)完全数的个数 * @param n 计算范围, 0 < n <= 500000 * @return n以内完全数的个数, 异常情况返回-1 *  */    public static int count(int n)  
知识点字符串
运行时间限制10M
内存限制128
输入输入一个数字
输出输出完全数的个数
样例输入1000
样例输出3
import java.util.Scanner;

public class Main{
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
sc.close();
System.out.println(count(n));
}

private static boolean isNum(int n) {
int sum = 0;
for (int i = 1; i < n; i++) {
if (n % i == 0)
sum += i;
}
if (sum == n)
return true;
else
return false;
}

private static int count(int n) {
if (n <= 0 || n > 500000)
return -1;
int count = 0;
for (int i = 1; i <= n; i++)
if (isNum(i))
count++;
return count;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: