Bitte nachrechnen



  • Ich schreibe gerade eine Klasse für große natürliche Zahlen und bin mir zwar ziemlich sicher, dass sie korrekt rechnet, will aber zur Sicherheit bitten, dass jemand folgende Rechnung verifiziert:

    00003A9E00003BF600005F3200001A4900003E1200005CFD00006B360000587800004B40000022EE
    000023500000759A0000012000000732000056AE00000BDB0000301C0000030A00006B890000260D
    000022130000323B00004E4500007FF500007F9600006BFC000063CB00001AD400006E5D00001E1F
    00003B2500001238000045090000767D00007A5A00005D030000701F000026A60000428B000066BB
    0000644300004DC80000074D00002D12000039B3000054DE0000154700004DB700004D060000491C
    0000440D0000305E000001240000009900000F3E0000390C00007E870000153C000012DB00002EA6
    00000BB3000001EB000026E9000041BB00005AF100006DF10000164900005F9000006952000072AE
    00002CD600003D6C00004AE100006784000018BE0000482300000029 * 000032E600006B7200006
    172000019160000489C00005E9D0000261E00007DD1000022CD00003A610000288F00006C6900002
    FFF00003C6100002C4900004657000075EF0000798300000D660000368E000054DC0000422D00000
    47E00006AD600002F1400000FBF00003CD600005C67000060BF00005753000048CC000023C900003
    3EA00005DB200004080000013E900003CD500006899000016C50000187E00004A800000692C00007
    0490000139D0000577200007BB90000090200003699000026CA000058B0000073DA0000121F00007
    98B000012E10000409D000059910000082200003EF600005422000015A100002C3B0000603200007
    EB700004230000066C40000366B00001CD00000136600002E400000494400004DF200005E1400003
    14F00004CAD00000DDC00005F490000797D
    = 0BA785F424860F604267C8D449BF8AFA521C2B5E668B3DEE906F5E52B8706F0AB4F1F1AFCC3DB7
    DAB5D4B6F4E38B46ADF80BD62AFA0CA4AAD0B0986F0587471316FFD1B30EAC688F44DDF35330F82E
    2D2F226682592FFB526C016B47940BEA8B87A01E5EDF5B7BB0AF9CB70AE4833B10EF96EC72FE95B4
    A6216A56B91C3C97F4FCE4BD8932B263CB92DC7FEAB7A4D171506EF978B3BB8F11A8100C7FE59D5A
    97D9E2053F228C0082F26AC394F1C6C99C0516AF3631D0CBE720F77AD04B71A2B4392A4C4A60515E
    BD8822CC34CD48042BC63A1C99610FA4645D3799BDB7C59946F3F79F068B4BA6AA8EEC28FF88CC6B
    ECCCDAD572BC3E9BBEA963124B25D15E42F9D8F46317A323DA609A26B530BCE7657B3D317769D80F
    9F84A172175CBE16B8A0CCB4C8D3524AD1841762CCECDF8EA40101315DC14EC93FC82DD77E703A48
    21CEFE79D451A4FE6E7B19C2FE483089756F78B7844EC786C03C5B29F3FA5CC6CF0750060EF604FD
    69E5180D49A971CCCACEA51846A85248C2A6AD4A35A0C76D00C618ADD3BEBE8A5EA94FA9857D813A
    E26900E4D56E3AEE6600380330E6C66A78EBD90157FF343219D53B1F588EBECEE2CD6CA053012C85
    2FB19BA18D873E8E0670B3A1704F0449D859F4C3D90CBC685E0D57C8DC316F06F7EBA8128AEC83D2
    1CFEF6FEB3AEC6F151915E90D29169CC4B7F3B59CB9EF60F6A83C25FDC884D0FF03662BAA94EAD47
    544A1F93695470967248E745602A6AC6F21E15413220E509F20622E6720974FF0300EE316FF53566
    71F71F4391CC9D1335B3C807C1C32E3D16C2293D7393E777676E8585FA53FCB3BC610A5C173E498C
    6B2699A9FD224B06C800137505
    

    Alle Zahlen sind zur Basis 16.



  • Hallo ... also ich hab's grade eben nochmal nachrechnen lassen:

    BA785F424860F604267C8D449BF8AFA521C2B5E668B3DEE906F5E52B8706F0AB4F1F1AFCC3DB7DAB5D4B6F4E38B46ADF80BD62AFA0CA4AAD0B0986F0587471316F
    FD1B30EAC688F44DDF35330F82E2D2F226682592FFB526C016B47940BEA8B87A01E5EDF5B7BB0AF9CB70AE4833B10EF96EC72FE95B4A6216A56B91C3C97F4FCE4B
    D8932B263CB92DC7FEAB7A4D171506EF978B3BB8F11A8100C7FE59D5A97D9E2053F228C0082F26AC394F1C6C99C0516AF3631D0CBE720F77AD04B71A2B4392A4C4
    A60515EBD8822CC34CD48042BC63A1C99610FA4645D3799BDB7C59946F3F79F068B4BA6AA8EEC28FF88CC6BECCCDAD572BC3E9BBEA963124B25D15E42F9D8F4631
    7A323DA609A26B530BCE7657B3D317769D80F9F84A172175CBE16B8A0CCB4C8D3524AD1841762CCECDF8EA40101315DC14EC93FC82DD77E703A4821CEFE79D451A
    4FE6E7B19C2FE483089756F78B7844EC786C03C5B29F3FA5CC6CF0750060EF604FD69E5180D49A971CCCACEA51846A85248C2A6AD4A35A0C76D00C618ADD3BEBE8
    A5EA94FA9857D813AE26900E4D56E3AEE6600380330E6C66A78EBD90157FF343219D53B1F588EBECEE2CD6CA053012C852FB19BA18D873E8E0670B3A1704F0449D
    859F4C3D90CBC685E0D57C8DC316F06F7EBA8128AEC83D21CFEF6FEB3AEC6F151915E90D29169CC4B7F3B59CB9EF60F6A83C25FDC884D0FF03662BAA94EAD47544
    A1F93695470967248E745602A6AC6F21E15413220E509F20622E6720974FF0300EE316FF5356671F71F4391CC9D1335B3C807C1C32E3D16C2293D7393E777676E8
    585FA53FCB3BC610A5C173E498C6B2699A9FD224B06C800137505
    

    Dein Programm sollte stimmen... 🙂

    Aber das nächste mal tut's bestimmt eine Zahl kleiner 2440 bit auch... 🙂



  • Vielen Dank!

    mady schrieb:

    Aber das nächste mal tut's bestimmt eine Zahl kleiner 2440 bit auch... 🙂

    Eigentlich plane ich für 4096 bit :).

    EDIT: Halte mich nicht für paranoid, aber stimmt

    00003A9E00003BF600005F3200001A4900003E1200005CFD00006B360000587800004B40000022EE
    000023500000759A0000012000000732000056AE00000BDB0000301C0000030A00006B890000260D
    000022130000323B00004E4500007FF500007F9600006BFC000063CB00001AD400006E5D00001E1F
    00003B2500001238000045090000767D00007A5A00005D030000701F000026A60000428B000066BB
    0000644300004DC80000074D00002D12000039B3000054DE0000154700004DB700004D060000491C
    0000440D0000305E000001240000009900000F3E0000390C00007E870000153C000012DB00002EA6
    00000BB3000001EB000026E9000041BB00005AF100006DF10000164900005F9000006952000072AE
    00002CD600003D6C00004AE100006784000018BE0000482300000029 * 00001AF400006D2200006
    732000007CF000000350000127E0000205900005FA400004CD400005A9F00006AD400005DD500001
    1F400002B0C0000249E000078740000283300005F1E00000E1200000FC900006BCB0000195300005
    42C0000503900006BE8000018D700004402000006770000494A00007F4F00000384000071F000004
    01D000032E600006B7200006172000019160000489C00005E9D0000261E00007DD1000022CD00003
    A610000288F00006C6900002FFF00003C6100002C4900004657000075EF0000798300000D6600003
    68E000054DC0000422D0000047E00006AD600002F1400000FBF00003CD600005C67000060BF00005
    753000048CC000023C9000033EA00005DB200004080000013E900003CD500006899000016C500001
    87E00004A800000692C000070490000139D0000577200007BB90000090200003699000026CA00005
    8B0000073DA0000121F0000798B000012E10000409D000059910000082200003EF60000542200001
    5A100002C3B0000603200007EB700004230000066C40000366B00001CD00000136600002E4000004
    94400004DF200005E140000314F00004CAD00000DDC00005F490000797D
    = 062BEA981F4D31743B368930454ECE0639FD9E3E360873EA589100F982C4F7FB91A941899CE0F1
    F2965CE628AEA8C33DD609471DD837C262BB1DE04B005F0B3D07D0EA080A6E22FAF8AE0434073CE7
    9317A827E72698227C35F1CFC233C27BB479318EA79FA63D63AB41CB4B78BA8E4CA4818F71BFF352
    A7C1C2695F14E931F5C382B5F94103FF9D612BBCCC8BC212D8633B93355E013A486DAFC1A9855536
    29E544833AB0965631FD4AC3CEE2263DBFBA6EF3CF2B1BEA7F2206AE311860C61436AA1B2865A149
    E56B01567265594B9350B5EE36228F788A7D27880A87711483E28506E3CBA9BC6BED88B06681656F
    C7A6308F37977695EEB2A18738E6648A9A183441B1186050DB05A71E405DADBADE3D8EB96307A7F9
    0B7C5142677D03ACF598093AB49B476310DD7FC902971C4BB8BD8ED30E8AC5B028D9AE4DEAE77E0F
    89FD369B42881F7667E05191F1C4ADD37729AD57981393E1257E2F7446A8A24550FEE4C416FB9BC7
    F191ED1B0193DCE869810E6A1ADB8D55DBA2F28C62A3F8BC3F1F9CA05AD9A77E80CFA316CF0F1D06
    E9C301A2EB036F331BCDDD2560D7B89A22C1D37A94C6CE7D8FF9A03C4B963A8E33ECE9D349010131
    5DC14EC93FC82DD77E703A4821CEFE79D451A4FE6E7B19C2FE483089756F78B7844EC786C03C5B29
    F3FA5CC6CF0750060EF604FD69E5180D49A971CCCACEA51846A85248C2A6AD4A35A0C76D00C618AD
    D3BEBE8A5EA94FA9857D813AE26900E4D56E3AEE6600380330E6C66A78EBD90157FF343219D53B1F
    588EBECEE2CD6CA053012C852FB19BA18D873E8E0670B3A1704F0449D859F4C3D90CBC685E0D57C8
    DC316F06F7EBA8128AEC83D21CFEF6FEB3AEC6F151915E90D29169CC4B7F3B59CB9EF60F6A83C25F
    DC884D0FF03662BAA94EAD47544A1F93695470967248E745602A6AC6F21E15413220E509F20622E6
    720974FF0300EE316FF5356671F71F4391CC9D1335B3C807C1C32E3D16C2293D7393E777676E8585
    FA53FCB3BC610A5C173E498C6B2699A9FD224B06C800137505
    

    ?



  • fang auch mal an, andere sachen zu testen.
    wie wärs mit der quersumme von 2^1000000 oder 2^341%341?



  • Bis jetzt habe ich erst +, - und * implementiert und teste gerade die Karatsuba-Multiplikation.
    Für die Multiplikation gibt es einen einfachen Test: Sei b die Basis der Zahldarstellung: [a_{n-1}, ... a_0].
    Dann ist [b-1, ... b-1 (n mal)]^2 = [b-1, ... (n-1 mal), b-2, 0 ... (n-1 mal), 1].



  • \aleph_0 schrieb:

    ... Eigentlich plane ich für 4096 bit :).

    EDIT: Halte mich nicht für paranoid, aber stimmt

    000...37505
    

    ?

    hmmm....

    Das bekommt meine (eigene) Library raus:

    62BEA981F4D31743B368930454ECE0639FD9E3E360873EA589100F982C4F7FB91A941899CE0F1F2965CE628AEA8C33DD609471DD837C262BB1DE04B0
    05F0B3D07D0EA080A6E22FAF8AE0434073CE79317A827E72698227C35F1CFC233C27BB479318EA79FA63D63AB41CB4B78BA8E4CA4818F71BFF352A7C
    1C2695F14E931F5C382B5F94103FF9D612BBCCC8BC212D8633B93355E013A486DAFC1A985553629E544833AB0965631FD4AC3CEE2263DBFBA6EF3CF2
    B1BEA7F2206AE311860C61436AA1B2865A149E56B01567265594B9350B5EE36228F788A7D27880A87711483E28506E3CBA9BC6BED88B06681656FC7A
    6308F37977695EEB2A18738E6648A9A183441B1186050DB05A71E405DADBADE3D8EB96307A7F90B7C5142677D03ACF598093AB49B476310DD7FC9029
    71C4BB8BD8ED30E8AC5B028D9AE4DEAE77E0F89FD369B42881F7667E05191F1C4ADD37729AD57981393E1257E2F7446A8A24550FEE4C416FB9BC7F19
    1ED1B0193DCE869810E6A1ADB8D55DBA2F28C62A3F8BC3F1F9CA05AD9A77E80CFA316CF0F1D06E9C301A2EB036F331BCDDD2560D7B89A22C1D37A94C
    6CE7D8FF9A03C4B963A8E33ECE9D3490101315DC14EC93FC82DD77E703A4821CEFE79D451A4FE6E7B19C2FE483089756F78B7844EC786C03C5B29F3F
    A5CC6CF0750060EF604FD69E5180D49A971CCCACEA51846A85248C2A6AD4A35A0C76D00C618ADD3BEBE8A5EA94FA9857D813AE26900E4D56E3AEE660
    0380330E6C66A78EBD90157FF343219D53B1F588EBECEE2CD6CA053012C852FB19BA18D873E8E0670B3A1704F0449D859F4C3D90CBC685E0D57C8DC3
    16F06F7EBA8128AEC83D21CFEF6FEB3AEC6F151915E90D29169CC4B7F3B59CB9EF60F6A83C25FDC884D0FF03662BAA94EAD47544A1F9369547096724
    8E745602A6AC6F21E15413220E509F20622E6720974FF0300EE316FF5356671F71F4391CC9D1335B3C807C1C32E3D16C2293D7393E777676E8585FA5
    3FCB3BC610A5C173E498C6B2699A9FD224B06C800137505
    

    Ohne jetzt Byte für Byte verglichen zu haben würde ich sagen, es stimmt... 🙂



  • Nochmal danke!
    Verwendest du für die Multiplikation auch den Karatsuba-Algorithmus?


Anmelden zum Antworten