您的位置:首页 > 其它

iNOC产品部--完全数计算

2015-04-22 20:14 204 查看
package oj.test;

import java.util.Iterator;

import java.util.LinkedList;

import java.util.Scanner;

public class Demo4 {

/**

* @iNOC产品部--完全数计算

* 完全数(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

*

*/

public static void main(String[] args) {

Scanner sc = new Scanner(System.in);

int n = sc.nextInt();

int sum = count(n);

if(sum>0)

sop(sum);

else

sop(-1);

}

private static int count(int n) {

int count =0;

for(int i=2;i<=n;i++){

if(wanbei_method(i))

count++;

}

return count;

}

private static boolean wanbei_method(int x) {

LinkedList<Integer> list = new LinkedList<Integer>();

for(int i=1;i<x;i++){

if(x%i==0)

list.add(i);

}

int sum = 0;

Iterator<Integer> it = list.iterator();

while(it.hasNext()){

sum = sum+it.next();

}

if (sum == x)

return true;

else

return false;

}

private static void sop(Object obj) {

System.out.println(obj);

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: