• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Najszybsze obliczanie ilości dzielników liczby

Object Storage Arubacloud
0 głosów
7,146 wizyt
pytanie zadane 21 kwietnia 2017 w C i C++ przez kacper1445 Gaduła (4,880 p.)

Witam. Mam za zadanie obliczyć ilość dzielników danej liczby. Na wejściu są liczby od 0 do 1000000000.

Taki kodzik nie działa we wszystkich przypadkach (za długi czas pracy przy większych liczbach). 

#include <iostream>

using namespace std;
long long a,b=1;
int main()
{
    cin>>a;
    for(int i=1;i<a;i++)
    {
        if(a%i==0) b++;
    }
    cout<<b;
    return 0;
}

Zna ktoś szybszy sposób?

1 odpowiedź

+2 głosów
odpowiedź 21 kwietnia 2017 przez MetGang Nałogowiec (34,360 p.)
wybrane 21 kwietnia 2017 przez kacper1445
 
Najlepsza

http://www.matematyczny-swiat.pl/2013/02/dzielniki-naturalne-liczby-naturalnej.html

Idea ogólnie jest taka: rozbijasz liczbę na iloczyn liczb pierwszych (prime factorization), bierzesz potęgi poszczególnych liczb i podstawiasz do wzoru (a1 + 1) * (a2 + 1)...

40 = 2^3 * 5^1 -> (3 + 1) * (1 + 1) = 4 * 2 = 8 -> 40 ma 8 dzielników

Sam zaimplementowałem taki algorytm i jest on o wiele szybszy niż ten tutaj przedstawiony.

komentarz 21 kwietnia 2017 przez kacper1445 Gaduła (4,880 p.)

Dzięki wielkie pomogło laugh

Podobne pytania

0 głosów
1 odpowiedź 1,403 wizyt
pytanie zadane 28 lutego 2016 w C i C++ przez Madrox24 Początkujący (350 p.)
0 głosów
1 odpowiedź 2,427 wizyt

92,555 zapytań

141,404 odpowiedzi

319,557 komentarzy

61,940 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...