Liczba różnych czynników pierwszych liczby

0

Siemka. Czy ktoś mógłby mi pomóc tak zmodyfikować kod, by program wypisywał liczbę różnych czynników pierwszych podanej liczby całkowitej? Czyli, dla 60 wynik to 3, bo to jest 2 razy 2 razy 3 razy 5, więc są trzy różne czynniki. Z góry dziękuję za pomoc


using namespace std;

int main()
{
    int n, d=2;
    cout << "n = "; cin>>n;
    cout<<n<<" = ";
    while (d*d<=n)
        if (n%d==0)
        {
            cout << d << " * ";
            n=n/d;
        }
        else d++;
    cout << n;
    return 0;
}
1

Wstaw kod jako tekst a nie jako obrazek

0

@KamilAdam: Dzięki, już zaktualizowane ;) A jesteś może w stanie mi pomóc? Byłbym bardzo wdzięczny

2

Dodaj zmienną int licznik {0}; i inkrementuj ją gdy n%d==0 oraz gdy we wcześniejszym przebiegu pętli while zwiększana była wartość zmiennej d.

0

Oddziel kod wykonujący obliczania od wypisywania wyniku - zdefiniuj odpowiednią funkcję.

0

Do rady od @TomaszLiMoon, prościej będzie jak dodasz podatkową pętle dzielącą n przez bieżącą wartość d.

Aczkolwiek wg mnie będzie prościej z użyciem Sita Eratostenesa.

1 użytkowników online, w tym zalogowanych: 0, gości: 1