Pagini recente » Cod sursa (job #1242740) | Cod sursa (job #166469) | Cod sursa (job #2246056) | Cod sursa (job #2047897) | Cod sursa (job #1544564)
#include <stdio.h>
#include <math.h>
#define lung 1000001
struct Res
{
unsigned long long nr;
unsigned long long sum;
};
FILE* fin;
FILE* fout;
bool* composite;
void load()
{
fin = fopen("ssnd.in","r");
fout = fopen("ssnd.out","w");
}
int readT()
{
int t;
fscanf(fin,"%d",&t);
return t;
}
void initComposite()
{
composite= new bool[lung];
for(int i=0;i<lung;i++)
{
composite[i]= false;
}
composite[1] = true;
composite[0] = true;
}
void genComposite()
{
int t;
int rad;
rad = sqrtl(lung);
for(unsigned long long i=2;i<rad;i++)
{
if(!composite[i])
{
t = i * i;
for(unsigned long long j=t;j<lung;j+=i)
{
composite[j] = true;
}
}
}
}
int init()
{
initComposite();
genComposite();
load();
return readT();
}
void write(Res res)
{
fprintf(fout,"%llu %llu\n",res.nr,res.sum);
}
void ssnd(int t)
{
unsigned long long nr;
Res res;
for(int k=0;k<t;k++)
{
fscanf(fin,"%llu",&nr);
res.nr = 0;
res.sum = 0;
int rad;
rad = sqrtl(nr);
for(unsigned long long i=2;i<rad;i++)
{
if(!composite[i])
{
for(unsigned long long j = i;j<nr;j+=i)
{
if(nr % j == 0)
{
bool b = true;
for(int l = i-1 ; l>=2;l --)
{
if(j % l == 0)
{
b = false;
}
}
if(b)
{
res.nr ++;
res.sum+= j;
}
}
}
}
}
res.nr+=2;
res.sum+=nr+1;
write(res);
}
}
void CloseFiles()
{
fclose(fin);
fclose(fout);
}
void Terminate()
{
CloseFiles();
delete[] composite;
}
int main()
{
ssnd(init());
Terminate();
return 0;
}