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; }
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; }
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]; }
/** 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; }