Project Euler #23: Non-abundant sums

  • + 0 comments

    in c

    include

    include

    include

    include

    include

    include

    include

    include

    include

    include

    bool check_abundant(int n) {

    int sum = 1;
    for (int i = 2; i * i <= n; ++i) {
    
        if (n % i == 0) {
            sum += i;
            if (i != n / i) {
                sum += n / i;
            }
        }
    }
    
    return sum > n;
    

    }

    bool two_abundant_number(int n) {

    for (int i = 12; i <= n / 2; ++i) {
    
        if (check_abundant(i) && check_abundant(n - i)) {
            return true;
        }
    }
    
    return false;
    

    }

    int main() {

    int t;
    scanf("%d", &t);
    char results[t][4];
    
    for (int i = 0; i < t; ++i) {
        int n;
        scanf("%d", &n);
    
        if (two_abundant_number(n)) {
            sprintf(results[i], "YES");
        } 
        else {
            sprintf(results[i], "NO");
        }
    }
    
    for (int i = 0; i < t; ++i) {
        printf("%s\n", results[i]);
    }
    
    return 0;
    

    }