Pagini recente » Cod sursa (job #2106367) | Cod sursa (job #2024704) | Cod sursa (job #2669403) | Cod sursa (job #1997288) | Cod sursa (job #2000847)
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#define File_in "ssnd.in"
#define File_out "ssnd.out"
#define MAX 1000000000
char ciur[MAX];
void ssnd (long long n,long long *nr, long long *s){
long long i,a,p;
*nr = 1;
*s = 1;
if(n == 1 || n == 0 ){
*nr = n;
*s = n;
}
else{
for ( i= 2; i*i <=n; i++ )
if( n % i == 0){
a = 0;
while(n%i==0){
n/=i;
a++;
}
*nr=*nr*(a+1);
*s= *s*((pow (i, a+1)-1)/(i-1));
*s%=9973;
}
}
}
int main()
{
freopen(File_in, "r", stdin);
freopen(File_out, "w", stdout);
long long t,i,j,n,nr,s;
scanf("%lld",&t);
ciur[1]=ciur[0]=1;
for ( i = 2; i*i <= 1000001; i++){
if( ciur[i] == 0)
for(j= i*i; j <= 1000001; j +=i)
ciur[j] = 1;
}
for ( i = 1; i <= t; i++)
{
scanf("%lld",&n);
if(n<1000000){
if(ciur[n]==0)
printf("2 %lld\n",1+n);
else
if(n!=1){
ssnd(n,&nr,&s);
printf("%lld %lld\n",nr,s);
}
else printf("1 1\n");
}
else
{
ssnd(n,&nr,&s);
printf("%lld %lld\n",nr,s);
}
}
return 0;
}