Поправка.
Для произвольных чисел

подходят (т.е. существуют такие числа

, что) такие

, что

не делится на

Или,

, где

- степень вхождения простого

в разложении

на простые множители
Код на pari/gp который ищет числа лля данного k
(Оффтоп)
Код:
find_N(k, count = 1) = {
if(k < 2, error("множитель k должен быть > 1"));
if(count < 1, error("количество должно быть > 0"));
\\ Быстрая проверка:
\\ 2-5-часть числа k-1 должна помещаться в цифру 1..9.
\\ Допустимы только 1, 2, 4, 8, 5.
my(v2 = valuation(k-1, 2), v5 = valuation(k-1, 5));
if(2^v2 * 5^v5 > 9, return([]));
my(results = List(), found = 0, pow10 = 1, x = 0, N = 0);
while(found < count,
pow10 *= 10;
\\ Перебираем первую цифру искомого числа
for(a = 1, 9,
if((a * (pow10 - k)) % (k-1) == 0,
x = a * (pow10 - k) / (k-1);
if(x >= 0 && x < pow10,
N = a * pow10 + x;
listput(results, N);
found++;
if(found >= count, return(Vec(results)))
)
)
);
);
Vec(results)
}
Запуск, ищем 4 первых N для k=22
Код:
? find_N(22,4)
time = 1 ms.
[726, 7326, 73326, 733326]
?
Если решений нет, возвращается пустой вектор []