int main(void) { FILE *inp, *outp; int numIn, status; /*Open files*/ inp = fopen("perfect.dat", "r"); outp = fopen("perfect.out", "w"); status = fscanf(inp, "%d", &numIn); /*While there are no errors, output results to output file*/ while(status == 1) { if (numIn == sumOfDivisors(numIn)) fprintf(outp, "%d is a perfect number\n", numIn); else fprintf(outp, "%d is not a perfect number\n", numIn); status = fscanf(inp, "%d", &numIn); } if (status != EOF) printf("There was an error in the input. \n\nExiting."); /*Close files*/ fclose(inp); fclose(outp); return(0); }
int main(int argc, char **argv) { unsigned int result = 0; printf("220 -> %d\n", sumOfDivisors(220)); printf("284 -> %d\n", sumOfDivisors(284)); for (int i = 0; i < 10000; i++) { unsigned int rv = sumOfDivisors(i); if (sumOfDivisors(rv) == i) { if (i < rv) result += i + rv; } } printf("%d\n", result); return 0; }
void main() { int sums[9999]; int i, count; for (i = 0; i < 9999; ++i) sums[i] = sumOfDivisors(i + 1); for(i = 0,count = 0;i < 9999;i++) if((sums[i] < 9999) && (sums[i] > (i + 1)) && (sums[sums[i] - 1] == (i + 1))) count += (i + 1) + sums[i]; printf("solution: %d\n", count); }
int main() { assert(sumOfDivisors(220) == 284); int number1, number2; scanf("%d %d", &number1, &number2); if (amicable_numbers(number1, number2)) printf("YES\n"); else printf("NO\n"); return 0; }
/* returns array of all abundant nums less than max parameter, outputs size of resulting array to size parameter */ unsigned int *abunNums(unsigned int max, unsigned int *size) { unsigned int *out = NULL; unsigned int c; unsigned int n = 0; /* array size representer */ for (c=12 ; c<max ; c++) // 12 is smallest abundant num if (sumOfDivisors(c)>c || c%12==0) { n+=1; out = (unsigned int *)realloc(out,sizeof(unsigned int)*n); out[n-1] = c; } *size = n; return out; }
int main(int argc, char const *argv[]) { int amicableSum = 0; int limit = 10000; bool nums[10000] = {false}; bool isSumSuitable; bool isAmicable = false; printf("\n"); int iSum = 0; int i; for (i = 2; i < limit; i++) { if (nums[i] == false) { iSum = sumOfDivisors(i); isSumSuitable = (iSum != i) && (iSum < limit) && (iSum > 1); if (isSumSuitable) { isAmicable = checkAmicable(i, iSum); } } if (isAmicable) { printf("%d and %d are an amicable pair\n", i, iSum); nums[i] = true; nums[iSum] = true; amicableSum += i + iSum; } isAmicable = false; } printf("\nSum of amicable numbers under %d:\n\t%d\n", limit, amicableSum); return 0; }
bool isAbundant(int n) { return (sumOfDivisors(n) > n); }
bool checkAmicable(int n, int m) { int mSum = sumOfDivisors(m); bool isAmicable = mSum == n; return isAmicable; }
bool amicable_numbers(int a, int b) { return ((sumOfDivisors(a) == b) && (sumOfDivisors(b) == a)); }