#include <stdio.h>
#define PRIMES_COUNT 37
#define MAX_PRIMES 10
int main() {
static int primes[PRIMES_COUNT] = {
2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53,
59, 61, 67, 71, 73, 79, 83, 89, 97, 101, 103, 107, 109, 113,
127, 131, 137, 139, 149, 151, 157
};
unsigned int k;
int i, n;
int current_prime = 0, answer = -1;
unsigned int temp;
int key_index;
int multK[MAX_PRIMES];
int keys[MAX_PRIMES];
int multN[MAX_PRIMES];
for (i = 0; i < MAX_PRIMES; i++) {
multK[i] = 0;
keys[i]=0;
multN[i] = 0;
}
temp = k;
key_index=0;
int increase_key = 0;
while (current_prime < PRIMES_COUNT)
if (temp % primes[current_prime] == 0) {
temp /= primes[current_prime];
if ( multK[key_index]==0 )
{
keys[key_index]=primes[current_prime];
increase_key = 1;
}
multK[key_index]++;
} else
{
current_prime++;
if (increase_key==1)
{
increase_key = 0;
key_index++;
}
if (key_index>=MAX_PRIMES)
{
printf("Слишком маленький размер массива ключей"); }
}
for (i = 2; i <= n; i++) {
int temp = i;
key_index=0;
while (key_index<MAX_PRIMES && multK[key_index]!=0)
if (temp % keys[key_index] == 0) {
temp /= keys[key_index];
multN[key_index]++;
} else key_index++;
}
for (i = 0; i < MAX_PRIMES && multK[i]!=0; i++) {
temp = multN[i] / multK[i];
if (temp < answer || answer == -1) answer = temp;
}
return (0);
}
I2luY2x1ZGUgPHN0ZGlvLmg+CgojZGVmaW5lIFBSSU1FU19DT1VOVCAzNwojZGVmaW5lIE1BWF9QUklNRVMgMTAKCmludCBtYWluKCkgewoJc3RhdGljIGludCBwcmltZXNbUFJJTUVTX0NPVU5UXSA9IHsKICAgICAgICAyLCAzLCA1LCA3LCAxMSwgMTMsIDE3LCAxOSwgMjMsIDI5LCAzMSwgMzcsIDQxLCA0MywgNDcsIDUzLAogICAgICAgIDU5LCA2MSwgNjcsIDcxLCA3MywgNzksIDgzLCA4OSwgOTcsIDEwMSwgMTAzLCAxMDcsIDEwOSwgMTEzLAogICAgICAgIDEyNywgMTMxLCAxMzcsIDEzOSwgMTQ5LCAxNTEsIDE1NwogICAgfTsKCgl1bnNpZ25lZCBpbnQgazsKICAgIGludCBpLCBuOwogICAgaW50IGN1cnJlbnRfcHJpbWUgPSAwLCBhbnN3ZXIgPSAtMTsKICAgIHVuc2lnbmVkIGludCB0ZW1wOwogICAgaW50IGtleV9pbmRleDsKCiAgICBpbnQgbXVsdEtbTUFYX1BSSU1FU107CiAgICBpbnQga2V5c1tNQVhfUFJJTUVTXTsKICAgIGludCBtdWx0TltNQVhfUFJJTUVTXTsKCglmb3IgKGkgPSAwOyBpIDwgTUFYX1BSSU1FUzsgaSsrKSB7CiAgICAgICAgbXVsdEtbaV0gPSAwOwogICAgICAgIGtleXNbaV09MDsKICAgICAgICBtdWx0TltpXSA9IDA7Cgl9CgogICAgc2NhbmYoIiVkJXUiLCAmbiwgJmspOwoKCXRlbXAgPSBrOwoJa2V5X2luZGV4PTA7CgkKCWludCBpbmNyZWFzZV9rZXkgPSAwOwoJCgl3aGlsZSAoY3VycmVudF9wcmltZSA8IFBSSU1FU19DT1VOVCkKICAgICAgICBpZiAodGVtcCAlIHByaW1lc1tjdXJyZW50X3ByaW1lXSA9PSAwKSB7CiAgICAgICAgICAgIHRlbXAgLz0gcHJpbWVzW2N1cnJlbnRfcHJpbWVdOwogICAgICAgICAgICBpZiAoIG11bHRLW2tleV9pbmRleF09PTAgKQogICAgICAgICAgICB7CiAgICAgICAgICAgIAlrZXlzW2tleV9pbmRleF09cHJpbWVzW2N1cnJlbnRfcHJpbWVdOwogICAgICAgICAgICAJaW5jcmVhc2Vfa2V5ID0gMTsKICAgICAgICAgICAgfQogICAgICAgICAgICBtdWx0S1trZXlfaW5kZXhdKys7CiAgICAgICAgfSBlbHNlIAogICAgICAgIHsKICAgICAgICAJY3VycmVudF9wcmltZSsrOwogICAgICAgIAkKICAgICAgICAJaWYgKGluY3JlYXNlX2tleT09MSkKICAgICAgICAJewogICAgICAgIAkJaW5jcmVhc2Vfa2V5ID0gMDsKICAgICAgICAJCWtleV9pbmRleCsrOwogICAgICAgIAl9CiAgICAgICAgCQogICAgICAgIAlpZiAoa2V5X2luZGV4Pj1NQVhfUFJJTUVTKQogICAgICAgIAl7CiAgICAgICAgCQlwcmludGYoItCh0LvQuNGI0LrQvtC8INC80LDQu9C10L3RjNC60LjQuSDRgNCw0LfQvNC10YAg0LzQsNGB0YHQuNCy0LAg0LrQu9GO0YfQtdC5Iik7CiAgICAgICAgCQlleGl0KDEpOwogICAgICAgIAl9CiAgICAgICAgfQoKCWZvciAoaSA9IDI7IGkgPD0gbjsgaSsrKSB7CiAgICAgICAgaW50IHRlbXAgPSBpOwoJCWtleV9pbmRleD0wOwoJCXdoaWxlIChrZXlfaW5kZXg8TUFYX1BSSU1FUyAmJiBtdWx0S1trZXlfaW5kZXhdIT0wKQoJCQlpZiAodGVtcCAlIGtleXNba2V5X2luZGV4XSA9PSAwKSB7CiAgICAgICAgICAgICAgICAgICAgdGVtcCAvPSBrZXlzW2tleV9pbmRleF07CiAgICAgICAgICAgICAgICAgICAgbXVsdE5ba2V5X2luZGV4XSsrOwogICAgICAgICAgICAgICAgfSBlbHNlIGtleV9pbmRleCsrOwogICAgICAgICAgICAKICAgIH0KCiAgICBmb3IgKGkgPSAwOyBpIDwgTUFYX1BSSU1FUyAmJiBtdWx0S1tpXSE9MDsgaSsrKSB7CiAgICAgICAgdGVtcCA9IG11bHROW2ldIC8gbXVsdEtbaV07CiAgICAgICAgaWYgKHRlbXAgPCBhbnN3ZXIgfHwgYW5zd2VyID09IC0xKSBhbnN3ZXIgPSB0ZW1wOwogICAgfQoKICAgIHByaW50ZiAoIiVpXG4iLCBhbnN3ZXIpOwogICAgcmV0dXJuICgwKTsKfQ==