#include "bigloop.h"


extern int  IDENT;
extern int  PORT;
extern char *SERVER;
extern ticket current;
//ullong loop( ullong deb, ullong fin)__attribute__((optimize(0)));

int parfait( ullong z , ullong *cpt)
{ ullong d;
  ullong s=1;
  for( d = 2; d*d <=z; d++ )
    if ( z % d == 0 ) {
       *cpt = *cpt + 1; //work factor contribution
	s+= d;
	if ( d*d != z ) s+= z/d;
	if ( s > z ) return 0;
    }
  if ( s == z ) return 1;
  return 0;
}

ullong loop( ullong deb, ullong fin)
{ ullong res = 0;
  while( deb < fin ) {
    // insert your computation
    if ( parfait( deb, &res) )
      sendvalue( deb );
    deb++;
  }
  return res;
}

int main( int argc, char*argv[])
{ ullong wf;
  if ( ! bigloopargs( argc, argv ) )
      exit(1);
    
  initbigloop();
  
  if ( registration( ) )
    while ( newjob( ) ){
      wf = loop( current.deb, current.fin );
      sendend( wf );
    }

  return 0;
}
