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?
@terjew
Det har du helt rett i. Nå var det vel helst det at jeg ikke har 128-bits, og så en
>> 64
som var åpenbaringen her. For at>> 64
skal gi noe annet enn 0 må man ha noe som er større enn uint64_t. Jeg så på signaturene og trodde først at det ikke var behov for int128, i tillegg til at datasettet (selv det store) bare har skarve 31 bits, men det ble naturligvis helt feil. Vi trenger ikke 128 bits, men vi trenger mer enn 64 bits. 😄det å caste en uint64_t til uint128_t og så bitshifte 64 steg for så å caste til uint64_t er en NOP! 😄
return ((__uint128_t)lowbits * d) >> 64;
Men det å caste produktet av en uint64_t og en uint32_t til uint128_t og så bitshifte 64 steg for så å caste til uint64_t er ikke en NOP. 😉
Right-shift er divisjon. Det var derfor jeg opprinnelig sa left-shift fordi jeg trodd det var snakk om multiplikasjon. Og her er det både multiplikasjon og divisjon. Gikk litt fort i svingene der.
Hmm... Ja. Og jeg som har blitt så glad i Raspbian. Nå må det bli noe annet.