Prawidłowa definicja totientu

Podzielność. Reszty z dzielenia. Kongruencje. Systemy pozycyjne. Równania diofantyczne. Liczby pierwsze i względnie pierwsze. NWW i NWD.
Awatar użytkownika
Borneq
Użytkownik
Użytkownik
Posty: 247
Rejestracja: 23 lip 2010, o 07:50
Płeć: Mężczyzna
Lokalizacja: geo:lat=0 geo:lon=0
Podziękował: 13 razy

Prawidłowa definicja totientu

Post autor: Borneq »

Była
funkcja ...przypisująca każdej liczbie naturalnej liczbę liczb względnie z nią pierwszych nie większych od niej samej
zmieniona na
funkcja ... przypisująca każdej liczbie naturalnej liczbę liczb względnie z nią pierwszych mniejszych od niej samej.
Dla n pierwszej mamy \(\displaystyle{ \varphi(n) = n-1}\), np. dla n=5 będzie to 4. Z jednej strony 1 nie jest liczbą pierwszą, ale czy 1 może być nazwane wględnie pierwszą choć nie jest pierwsza? Poprawiona definicja była by prawidłowa, ale znowu w

Kod: Zaznacz cały

https://oeis.org/A000010
podają
Euler totient function phi(n): count numbers <= n and prime to n
Jak się oblicza tę funkcję? należy rozłożyć n na czynniki czy jest szybszy sposób?
dec1
Użytkownik
Użytkownik
Posty: 714
Rejestracja: 21 mar 2016, o 21:42
Płeć: Mężczyzna
Pomógł: 191 razy

Prawidłowa definicja totientu

Post autor: dec1 »

1) Mniejszych.

2) \(\displaystyle{ 1}\) jest oczywiście względnie pierwsza z każdą liczbą całkowitą, liczby względnie pierwsze nie muszą być pierwsze.

3) Niestety trzeba rozłożyć liczbę na czynniki.

Kod: Zaznacz cały

https://gist.github.com/cslarsen/1635288
jest niezła implementacja w C++
Awatar użytkownika
Borneq
Użytkownik
Użytkownik
Posty: 247
Rejestracja: 23 lip 2010, o 07:50
Płeć: Mężczyzna
Lokalizacja: geo:lat=0 geo:lon=0
Podziękował: 13 razy

Prawidłowa definicja totientu

Post autor: Borneq »

A gdzie znaleźć funkcję binary_gcd?
dec1
Użytkownik
Użytkownik
Posty: 714
Rejestracja: 21 mar 2016, o 21:42
Płeć: Mężczyzna
Pomógł: 191 razy

Prawidłowa definicja totientu

Post autor: dec1 »

Jest napisane w komentarzu na górze, że trzeba sobie napisać funkcję sprawdzającą pierwszość, obliczającą NWD (binary nawiązuje do

Kod: Zaznacz cały

https://en.wikipedia.org/wiki/Binary_GCD_algorithm
algorytmu, szybszego niż algorytm Euklidesa) i wygenerować vector liczb pierwszych.

Do C++17 została dodana funkcja gcd, lecz można ją też otrzymać w C++14 przez std::__gcd(x).
ODPOWIEDZ