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);
}
}