martes, 14 de febrero de 2012

Project Euler 23

#include <iostream>
#include <string.h>
#define tam 28123
using namespace std;
static int vec[tam];
static bool vec2[tam];
int sum_div(int n)
{
    int sum=1;
    for(int i=2; i<=n/2; i++)
    {
        if(n%i==0)
        {
            sum+=i;
        }

    }
    return sum;
}
int main()
{
    int conta=0;
    for(int i=1; i<tam; i++)
    {
        if(sum_div(i)>i)
        {
            vec[conta]=i;
            conta++;
        }
    }
    memset(vec2,true,tam);
    int sum_abun=0;
    for(int r=0; r<conta; r++)
    {
        for(int i = 0; i < conta; i++)
        {
            sum_abun=vec[r] + vec[i];
            if(sum_abun <= tam)
            {
                vec2[sum_abun] = false;
            }
        }
    }
    int tot = 0;
    for(int i=0; i<tam; i++)
    {
        if(vec2[i])
            tot +=i;
    }
    cout<<tot<<endl;

    return 0;
}

No hay comentarios:

Publicar un comentario