Varför är a mod b < a/2 (a>b)?
Hej,
Nu vill jag inte utelämna information: men lite bakgrund som jag inte tror är relevant alls för min fråga. Jag höll på med en uppgift som bad mig analysera tidskomplexiteten (datalogiskt begrepp) av , implementerad m.h.a. Euklides algorithm.
Här visade sig en trivial egenskap (för att förstå uppgiften) vara att .
Dessvärre kan jag inte hitta någon förklaring på internet som jag begriper, riktigt.
Jag tänker så här:
Antag att .
där är en konstant,
Alltså, antagandet blir
Okej, nu får vi väl säga att inte är noll då, så det här blir inte superbra. Vi delar med iallafall:
.
Och här vill man säga typ "det gäller alltid", fanns jag vet inte om det stämmer...
Så det här säger inte heller någonting riktigt. Jag tror inte heller det är helt rätt på andra steg.
Finns det någon som kan ge mig en bra förklaring på hur det funkar?
Ni är hjältar!
Jag antar i detta inlägg att du menar att returnerar det minsta positiva heltalet som är kongruent med.
Vi kan tämka såhär:
Vi vet att .
Om är olikheten uppenbar eftersom , vilket är större än vad modulo operatorn kommer returnera.
Därmed kan vi anta att och då kan vi skriva , där
Definitionen av modulo ger oss att
Och vi har även att
Alltså har vi att
Jag kan förklara det med ord.
Om b<a/2 så kommer b att ”gå en gång till” i a. Vi kan alltså subtrahera b från a tills b>=a/2.
7 mod 3=1 eftersom 3 går två gånger i 7, med 1 som rest.
Om b=a/2 så är resten 0.
Om b>a/2 så kan måste resten vara <a/2.
Inte briljant matematiskt, men jag förstår hur jag tänker och som gammal kodare har jag alltid vetat att det är så utan att fundera så mycket.
Är a > b?
Laguna skrev:Är a > b?
Det var det jag också undrade, det står i titeln. (Inte i inlägget)
AlexMu skrev:Laguna skrev:Är a > b?
Det var det jag också undrade, det står i titeln. (Inte i inlägget)
Ja titta.
AlexMu skrev:vi har även att
Alltså har vi att
Den där delen var briljant, det var precis vad jag saknade.
Tack till dig och alla ni andra också förstås!
Sorry att jag glömde nämna a>b i OP.