Попробуйте это:
canActivate() {
return this.userService.getCurrentUser()
.pipe(
tap(user => {
if (!user) {
this.router.navigate(['/operator']);
}
}),
);
}
Если пользователь возвращается, это означает, что он вошел в систему, а если нет, он будет перенаправлен туда, куда вы хотите перенаправить.
Я сделаю дикое предположение, что отнимающая много времени часть вычисляет числа чисел.
Одной мыслью может быть попытка сгенерировать их каким-нибудь умным способом. Подумайте, можно ли рассчитать их все сразу, вместо того, чтобы вычислять по одному числу за раз ...
Кроме того, как вы вычисляете функцию totient? Определение (число целых чисел k, где gcd (n, k) == 1) не является полезным способом работы с ним. Найдите его и посмотрите, сможете ли вы найти более подходящую формулу для него.
Редактировать: Да, это выражение, которое я был после. Но прохождение каждого целого числа, его разложение и вычисление значения слишком медленное. Ищите способ вычислить табличные элементы без какого-либо факторинга ...
Попробуйте вернуться назад ... (начните с 1, 2 и т. Д. И продвигайтесь вверх, а не пытайтесь вернуться назад и связать в цепочки)
edit: также обратите внимание, что totient (x) имеет конкретная структура , а именно, totient (x) = x * произведение (1- (1 / p)), где p - различные простые множители, которые делят x.
Подсказки :
Используйте памятку и не рассчитывайте phi (n)
более одного раза.
Попробуйте использовать значения phi ()
, который вы уже вычислили для меньшего n при расчете phi (N). Что-то вроде phi (m * n) = phi (m) * phi (n)
[Каким свойством должны обладать m
и n
?]
Знаете ли вы, что такое phi (p)
, когда p - простое число ?
Well, I'm not familiar with it, and you don't show what you are doing... but some thoughts:
Я не решил, но думаю, что вы можете быть на правильном пути с вашей схемой кэширования, вы просто не можете кешировать правильные вещи. Надеюсь, это не слишком много или слишком неясный «намек» для вас.
Одна вещь, которую нужно понять, это то, что когда вы достигаете 6, например, остальная часть цепочки всегда равна 2,1 .