Pagini recente » Cod sursa (job #934118) | Cod sursa (job #2397022) | Cod sursa (job #645654) | Cod sursa (job #2121000) | Cod sursa (job #2165149)
#include <fstream>
#include <bitset>
#define NM 1000000
#include <algorithm>
using namespace std;
ifstream f("ssnd.in");
ofstream g("ssnd.out");
long long n,m,i,j,nrd,p1,p2,x,nr,p,max1;
long long v[NM],a[NM/1000];
bitset <NM> c;
int main()
{
f>>n; m=0; max1=0;
for(i=1;i<=n;i++) { f>>a[i]; max1=max(max1,a[i]); }
for(i=2;i*i<=sqrt(max1)+1;i++){
if(c[i]==0){
v[++m]=i;
for(j=i*i;j<=sqrt(max1)+1;j+=i) c[i]=1;
}
}
for(j=i+1;j<=sqrt(max1)+1;j++) if(c[j]==0) v[++m]=j;
//for(i=1;i<=m;i++) g<<v[i]<<' ';
for(i=1;i<=n;i++){
x=a[i];
j=1; nrd=1; p1=1; p2=1;
while(v[j]*v[j]<=x){
nr=0; p=v[j];
while(x%v[j]==0) { x/=v[j]; p*=v[j]; nr++; }
p1=((p1*(p-1))/(v[j]-1))%9973; //p2=p2*(v[j]-1);
nrd=nrd*(nr+1);
j++;
}
if(x!=1){ p1=((p1*((x*x)-1))/(x-1))%9973; nrd*=2; }
g<<nrd<<' '<<p1%9973<<'\n';
}
return 0;
}