deelbaarheid

Heb je een leuke tutorial, een duidelijke uitleg van een bepaald onderwerp, een interessante minicursus of heb je een leuk trucje gevonden, post het hier.

deelbaarheid

Berichtdoor David » 13 Aug 2011, 18:12

Ik heb op dit forum al eens de "truc" gezien om te bepalen of een getal deelbaar is door 9;
tel de cijfers bij elkaar op en als het resultaat deelbaar is door 9, dan is het oorspronkelijke getal dat ook.

Voorbeeld: 567 is deelbaar door 9, ook genoteerd als 9|567 omdat 9|5+6+7=18.

Nu kwam ik laatst ook een methode tegen om te bepalen of een getal deelbaar is door 7.
Trek het laatste getal (de eenheid) van de overgebleven cijfers.

Bijvoorbeeld: 406. Het laatste cijfer, de eenheid, is 6. Trek dat 2 keer af van de rest; 40.
40-2*6=28. 7|28 dus 7|406

Stel , dan geldt
Dat kan ook worden geformuleerd als


Op die manier kunnen de methode om deelbaarheid door 7 te testen ook zo formuleren:

als


Of ook



Ik vroeg me af of er een algemene methode is, ook om te kijken of een getal bijv. deelbaar is door 17. en ik kwam tot het volgende:

Stel dat je wilt aantonen dat een getal deelbaar is door


als



Voorbeeld:
Is 1586 deelbaar door 13?
13|158-(9-13)*6=182 dus 13|1586

Ik bekijk dit zelf nog wat verder; ook voor andere getalstelsels.

Voor nu denk ik:
Als

dan
met
Voor een g-tallig getallenstelsel.
Stap 1 van het oplossen van een probleem is te erkennen dat je een probleem hebt.
(Raffiek Torreman)
David
Moderator
Moderator
 
Berichten: 4935
Geregistreerd: 14 Mei 2009, 16:22

Re: deelbaarheid

Berichtdoor David » 14 Aug 2011, 12:59

Ok, ik heb alleen geen tegenvoorbeelden gevonden voor m=7 en m=13 in het 10-tallig getallenstelsel.

Voor m = 9 en m = 11 vind ik nu:


als


Dat sluit meer aan bij de eerder genoemde methode voor deelbaarheid door 9 bij een methode voor deelbaarheid door 11.

Een programma voor VBA Excel:
Met commentaar (commentaar achter de apostrof (')):
Code: Alles selecteren
Sub deelbaarheid()
' declaratie
Dim k As Long, d As Long, t As Boolean, b As String
' initialisatie
' b wordt een boodschap in een messagebox die vertelt of voor de gekozen waarden voor d uit de
' vermoedelijke formule deelbaarheid volgt. Nu is die boodschap leeg.
b = ""
' Test de formule voor deelbaarheid door 13. Met bijv. een extra for-loop kan deelbaarheid voor
' verschil-lende waarden testen.
d = 13
' waar of onwaar. Als er een tegenvoorbeeld is gevonden, wordt t onwaar (False) anders blijft
' het waar.
t = True
    ' voor alle gehele getallen tussen 1 en 10000 (bijv.)   
        For k = 1 To 10000
        ' Plaats d * k, hier 13 * k
        Cells(k, 1) = d * k
        ' Plaats cijfers van de cel in dezelfde rij in kolom 1 behalve het eenheidcijfer in cel 2.
        ' Trek daar (9-d) * "de eenheid" vanaf. Je kan vereenvoudigen voor d=13, maar dat deed ik
        ' niet voor eventueel bijv. de extra for-loop.
        Cells(k, 2) = "=" & Mid(CStr(d * k), 1, Len(CStr(d * k)) - 1) _
        & "-(9-" & d & ")*(" & Mid(CStr(d * k), Len(CStr(d * k)), 1) & ")"
        ' als de getallen in kolom 2 niet deelbaar zijn door d, hier 13, dan is t "False". Dan is er
        ' minstens 1 tegenvoorbeeld in de geteste waarden voor k.
        If Cells(k, 2) Mod d <> 0 Then
            t = False
        End If
    Next k
        ' Geef een Msgbox met de waarden voor t (True of False) met de bijbehorende waarden voor d;
        ' waarvoor is getest.
        b = b & d & ": " & t & " "
MsgBox b
End Sub


Zonder het commentaar.
Code: Alles selecteren
Sub deelbaarheid()
Dim k As Long, d As Long, t As Boolean, b As String
b = ""
d = 13
t = True
    For k = 1 To 10000
        Cells(k, 1) = d * k
        Cells(k, 2) = "=" & Mid(CStr(d * k), 1, Len(CStr(d * k)) - 1) _
        & "-(9-" & d & ")*(" & Mid(CStr(d * k), Len(CStr(d * k)), 1) & ")"
        If Cells(k, 2) Mod d <> 0 Then
            t = False
        End If
    Next k
        b = b & d & ": " & t & " "
MsgBox b
End Sub

De werking van het programma is onafhankelijk van het commentaar als het commentaar achter een apostrof staat.

Het programma toont niet het omgekeerde;
13 \not| 38
13 \not| 3 - (9-13)*8 dit laatste wordt niet gecontroleerd. Het kan zijn dat
13 | 3 - (9-13)*8. Controle moet nu uitwijzen of dat zo is.
Stap 1 van het oplossen van een probleem is te erkennen dat je een probleem hebt.
(Raffiek Torreman)
David
Moderator
Moderator
 
Berichten: 4935
Geregistreerd: 14 Mei 2009, 16:22

Re: deelbaarheid

Berichtdoor Sjoerd Job » 14 Aug 2011, 23:27

Even een volledige andere aanpak:

Om te testen of , volstaat het natuurlijk te testen dat , en .

De testen voor 2 en 5 kan je doen door naar de laatste zoveel cijfers te kijken.
De andere testen zijn recursief van aard (maar in VB is er natuurlijk wel een makkelijkere test, maar ja).

Als , is er een getal zodat . (Bij krijg je .).
Dan geldt natuurlijk de volgende equivalentie: schrijf . Dan . Je krijgt dus als test.

De waarden voor in termen van zijn niet al te moeilijk te vinden, denk ik. Desnoods via het extended gcd algoritme!
``Life is complex. It has real and imaginary parts.''
Sjoerd Job
Vergevorderde
Vergevorderde
 
Berichten: 1148
Geregistreerd: 21 Jan 2006, 15:09
Woonplaats: Krimpen aan den IJssel

Re: deelbaarheid

Berichtdoor David » 15 Aug 2011, 12:03

Mooie methode!
Ik doorloop hem een keer met een voorbeeld.
19|437?
Vind k zodat
k = 2;
437 = 43*10+7 dus b = 43 en a = 7

. De laatste is waar dus 19|437

Ik heb nog verder gekeken naar mijn methode.
voor m = 17 en m=3 krijg ik:


als



Voorbeeld: 17|4913 als 17|491-5*3=476. 17|47-5*6=17 dus 17|4913.

Voor m = 17 vond ik eerst:
maar dat klopt niet voor m=3.

Tot nu waren de "paren" m telkens opgeteld 20. (9+11), (7+13), (3+17).

Of ook, voor m = 3 en m = 17



als



Voorbeeld: 17|289 als 17|28-(5-17)*9=136


(Latex-weergave werkt nu niet optimaal bij mij).
Stap 1 van het oplossen van een probleem is te erkennen dat je een probleem hebt.
(Raffiek Torreman)
David
Moderator
Moderator
 
Berichten: 4935
Geregistreerd: 14 Mei 2009, 16:22

Re: deelbaarheid

Berichtdoor op=op » 10 Jul 2012, 10:37

Trucje om te bepalen of een getal deelbaar is door 999999000001.

Neem b.v. het getal X = 1534293465706534295.

Zet achter dit getal X 6 nullen en tel de uitkomst op bij X.
Resultaat: 1534295000000000001534295.
Je ziet twee gelijke getallen gescheiden door nullen.
Dus X is deelbaar door 999999000001.

Ander voorbeeld:
Neem X = 21355546478748521272834295.
Zet er 6 nullen achter en tel er X bij op.
Resultaat 21355567834295000021355567834295.
Het getal is dus deelbaar door 999999000001.
Gebruikers-avatar
op=op
Vergevorderde
Vergevorderde
 
Berichten: 1096
Geregistreerd: 23 Apr 2010, 18:11


Terug naar Tutorials en Minicursussen

Wie is er online?

Gebruikers in dit forum: Geen geregistreerde gebruikers en 5 gasten

Wie is er online?

Er zijn in totaal 5 gebruikers online :: 0 geregistreerd, 0 verborgen en 5 gasten (Gebaseerd op de gebruikers die actief waren gedurende 5 minuten)
De meeste gebruikers ooit tegelijkertijd online was 649 op 31 Okt 2014, 18:45

Gebruikers in dit forum: Geen geregistreerde gebruikers en 5 gasten
Copyright © 2009 Afterburner - Free GPL Template. All Rights Reserved.