Esempio n. 1
0
int main() {

    long long int sum;
    //最小的符合条件的数是24,因此初始化sum为1-23的和
    sum = 23*24/2;

    //上限
    int limit = 28123;
    int i, j, flag;
    int begin = clock();
    for (i=25; i<limit; i++) {
        //最小的abundant number是12
        j = 12;
        flag = 0;
        while (i-j >= j) {
            if (divisorSum(i-j) > (i-j) && divisorSum(j) > j) {
                flag++;
            }
            j++;
        }

        if (!flag) {
            printf("%d is\n", i);
            sum+= i;
        }
    }

    printf("sum of all the positive integers which cannot be written as the sum of two abundant numbers is %lld\n", sum);
    int end = clock();
    printf("time consumed is %dms\n", (end-begin));
    return 0;
}
Esempio n. 2
0
int main(int argc, char const *argv[]) {
	int ans = 0, i = 1;
	while(i <= 10000) {
		int a = divisorSum(i);
		if(a > i && divisorSum(a) == i)
			ans += (a + i);
		i++;
	}
	printf("%d\n", ans);
	return 0;
}
int main(){
    int t,N,temp=0,i,arr[100001],j=0;
    for(i=1;i<100001;i++){
        if(divisorSum(i)>i){
           arr[j]=i;
           j++;
        }
    }
    mergeSort(arr,0,j-1);
    scanf("%d",&t);
    while(t--){
        temp=0;
        scanf("%d",&N);
        for(i=0;i<j;i++){
            if(arr[i]<N){
                if(binarySearch(arr,i,j-1,N-arr[i])!=-1){
                    printf("YES\n");
                    temp=1;
                    break;
                }
            }
            else
                break;
        }
        if(temp==0)
            printf("NO\n");
    }
    return 0;
}
Esempio n. 4
0
int getNextLink(int n) {
  if (n == 0) { return 0; }
  if (n >= MAX_LINK) { return 0; }
  if (nextLink[n] != 0) { return nextLink[n]; }

  nextLink[n] = divisorSum(n);
  return nextLink[n];
}
Esempio n. 5
0
/**	Deficient : -1
	perfect : 0
	abundant : 1*/
int type(int n){
	int sumDiv = divisorSum(n);
	
	if(sumDiv < n)
		return -1;
	if(sumDiv == n)
		return 0;
		
	// printf("%d: %d\n", n, sumDiv);
	return 1;
}
int main()
{
	std::vector<int> abundentNums;

	std::vector<int> nums;
	long int sum = 0;

	long int tSum = 0;

	for(int i = 1; i < 28123; i++)
	{
		nums.push_back(i);
		tSum += i;
	}

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

		int temp = divisorSum(i);

		if(temp > i)
			abundentNums.push_back(i);

	}

	for(unsigned int i = 0; i < abundentNums.size(); i++)
		for(unsigned int j = i; j < abundentNums.size(); j++)
		{
			int t = abundentNums[i] + abundentNums[j] - 1;
			if(t < 28123)
				nums[t] = -1;
			else
				break;
		}
				

	for(int i = 0; i < 28123; i++)
	{
		if(nums[i] != -1)
			sum += nums[i];
	}

	std::cout << sum << std::endl;

	return 0;
}