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?
@bobcat4
Det var bl.a. clang's (til sitt forsvar: velmente) brutalitet som slo til her også ja. Men hadde enkelte målinger som var ganske så erratiske også som jeg ikke har klart å gjenskape. Vel, det du ser nå er i tråd (pun initielt ikke intended) med hva jeg ser her også nå.
Takk for optimaliseringsmotgiften 👍 . Den var effektig. Jeg ble selv lurt her av at den ikke optimaliserte
countHarshadPrimesMultithreaded
ut av loopen (selv kjørt med numthreads=1 som argument), kun når jeg kjørtecountHarshadPrimesOptimized
direkte derifra.Det er ganske så hyggelige tall, helt klart. 1.086s/0.270s for stort datasett 1x singletrådet/multitrådet er ikke grusomt. Og som du sier: vi holder det fortsatt lineært. Denne tilnærmingen vil riktignok få en bump i det øyeblikket vi overstiger 10 siffer og da må legge til enda en modulo i
getCrossumChunked_fastmod_unrolled
.