Pagini recente » Cod sursa (job #580581) | Cod sursa (job #2551132) | Cod sursa (job #672834) | Cod sursa (job #1864299) | Cod sursa (job #1691707)
# include <stdio.h>
# include <stdlib.h>
int nrZero( int nr, int baza ) {
int k;
k = 0;
while ( nr ) {
nr /= baza;
k += nr;
}
return k;
}
int src( int nr, int baza ) {
int pos, pas;
pos = 0;
for ( pas = 30; pas >= 0; pas -- )
if ( nrZero( pos + ( 1 << pas ), baza ) < nr )
pos += ( 1 << pas );
return pos + 1;
}
int srcA( int nr, int pow ) {
int d, p, max, c;
max = 0;
for ( d = 2; d * d <= nr; d ++ ) {
if ( nr % d == 0 ) {
p = 0;
while ( nr % d == 0 ) {
nr /= d;
p ++;
}
printf( "%d %d\n", d, pow * p );
c = src( pow * p, d );
printf( "%d %d %d\n", nr, d, pow * p );
if ( c > max )
max = c;
}
}
if ( nr > 1 )
max = src( pow, nr );
return max;
}
int main() {
FILE *fin = fopen( "gfact.in", "r" ), *fout = fopen( "gfact.out", "w" );
int p, q;
fscanf( fin, "%d%d", &p, &q );
fprintf( fout, "%d", srcA( p, q ) );
fclose( fin );
fclose( fout );
return 0;
}