Av: Didrik Pemmer Aalen
Et Harshadtall er definert som et positivt tall som er delelig med summen av alle sifferne i tallet. I noen tilfeller er summen av alle sifferne i tallet et primtall. Disse kaller vi Harshadprimtall.
1729 er et Harshadtall fordi 1 + 7 + 2 + 9 = 19 og 1729 % 19 = 0. Dette er også et Harshadprimtall, fordi 19 er et primtall.
1730 er ikke et Harshadtall fordi 1 + 7 + 3 + 0 = 11 og 1730 % 11 = 3.
Hvor mange tall fra 1 til og med 98765432 er Harshadprimtall?
@michaelo
Jeg har fått inn nok en optimalisering her, noe som kutter kjøretiden på min versjon fra ca 9.2s til 6.6s på 1000 kjøringer (bygget med cl) med lite datasett, en besparelse på ca 25%.
Det er en variant av unrollingen for 10 og 10 steg jeg gjorde opprinnelig, men denne unroller flere steg og hopper samtidig også over tall som er delelige med 3.
Jeg vil ikke poste koden her ennå, for jeg har ikke fått inn din optimalisering med constexpr ennå, men det burde kunne gi en ytterligere 1-2% besparelse. Det ser ut til å være noen problemer med constexpr og fastmod i visual studio, jeg må finne ut hva som er greia der.