Szukalem sporo po necie, znalazlem rozne informacje, ale moze ktos powiedziec w jaki sposob najszybciej obliczyc funkcje phi (tocjent) dla roznych liczb? Mam takie zadanie:
Your task is to write an arithmetic function that counts the number of positive numbers less than or equal to n that are relatively prime to n. Two integers a and b are said to be relatively prime if the only positive integer that evenly divides both of them is 1. For example, 14 and 15 are relatively prime, being commonly divisible by only 1, but 14 and 21 are not, because they are both divisible also by 7.
i potrzebuje napisac algorytm, ktory dziala mozliwie szybko. Testowalem rozne mozliwosci i najszybciej do tej pory zadzialal mi algorytm oparty na rozkladzie liczby, z ktorej licze tocjent na czynniki i skorzystaniu z tego, ze tocjent tej liczby to iloczyn tocjentow ich czynnikow prostych podniesionych do potegi takiej, ile razy wystepuja w rozkladzie, np. majac liczbe 12 i chcac z niej liczyc tocjent rozkladam ja na czynniki proste: 12=223
teraz tocjent(12)=tocjent(22)*tocjent(31)=tocjent(4)tocjent(3)=22=4
Rozklad na liczby pierwsze robie najszybszym algorytmem jaki znalazlem. Wejscie i wyjscie sa rowniez mozlwie zoptymalizowane, jednak algorytm potrzebuje jeszcze bardziej przyspieszyc.
Czy jest jakis sposob na przyspieszenie takiego algorytmu?