Pagini recente » Cod sursa (job #3236225) | Cod sursa (job #2742941) | Cod sursa (job #1389115) | Cod sursa (job #180423) | Cod sursa (job #2689615)
#include <algorithm>
#include <fstream>
using namespace std;
ifstream cin( "gfact.in" );
ofstream cout( "gfact.out" );
pair<int, int> v[ 99999 ];
int poz;
void descompun( int n ){
int d = 2, p = 0;
while( n > 1 ){
p = 0;
while( n % d == 0 ){
n /= d;
++p;
}
if( p != 0 )
v[ poz ].first = d, v[ poz++ ].second = p;
++d;
if( n > 1 && d * d > n )
d = n;
}
}
int main()
{
int n, k, x, rez = 0, p;
cin >> n >> p;
descompun( n );
if( n == 0 ){
} else {
int i, ok = 1, j;
for( i = 0; i < poz; i++ ){
v[ i ].second *= p;
//cout << v[ i ].first << ' ' << v[ i ].second << '\n';
}
i = 1;
while( ok ){
++i;
n = i;
int j = 0;
int d = 2, p = 0;
while( n > 1 ){
p = 0;
while( n % d == 0 ){
n /= d;
++p;
}
if( p != 0 ){
while( j < poz && v[ j ].first < d )
++j;
if( v[ j ].first == d )
v[ j ].second -= p;
}
++d;
if( n > 1 && d * d > n )
d = n;
if( j > poz - 2 && v[ poz - 1 ].second <= 0 )
ok = 0;
}
}
cout << i;
}
return 0;
}