Dzielenie przez 1/998001

0
import java.math.*;
public class B
{
    public static void main(String[] args)
    {
        BigDecimal licznik=BigDecimal.ONE;
        BigDecimal mianownik=new BigDecimal(998001);
        MathContext mc=new MathContext(2000);
        BigDecimal wynik=licznik.divide(mianownik,mc);
        System.out.println(wynik);
    }
}

0.000001002003004005006007008009010011012013014015016017018019020021022023024025
02602702802903003103203303403503603703803904004104204304404504604704804905005105
20530540550560570580590600610620630640650660670680690700710720730740750760770780
79080081082083084085086087088089090091092093094095096097098099100101102103104105
10610710810911011111211311411511611711811912012112212312412512612712812913013113
21331341351361371381391401411421431441451461471481491501511521531541551561571581
59160161162163164165166167168169170171172173174175176177178179180181182183184185
18618718818919019119219319419519619719819920020120220320420520620720820921021121
22132142152162172182192202212222232242252262272282292302312322332342352362372382
39240241242243244245246247248249250251252253254255256257258259260261262263264265
26626726826927027127227327427527627727827928028128228328428528628728828929029129
22932942952962972982993003013023033043053063073083093103113123133143153163173183
19320321322323324325326327328329330331332333334335336337338339340341342343344345
34634734834935035135235335435535635735835936036136236336436536636736836937037137
23733743753763773783793803813823833843853863873883893903913923933943953963973983
99400401402403404405406407408409410411412413414415416417418419420421422423424425
42642742842943043143243343443543643743843944044144244344444544644744844945045145
24534544554564574584594604614624634644654664674684694704714724734744754764774784
79480481482483484485486487488489490491492493494495496497498499500501502503504505
50650750850951051151251351451551651751851952052152252352452552652752852953053153
25335345355365375385395405415425435445455465475485495505515525535545555565575585
59560561562563564565566567568569570571572573574575576577578579580581582583584585
58658758858959059159259359459559659759859960060160260360460560660760860961061161
26136146156166176186196206216226236246256266276286296306316326336346356366376386
39640641642643644645646647648649650651652653654655656657658659660661662663664665
6666677

0

Co ciekawe, to działa (częściowo, podobnie jak ten przykład) również dla dzielników:

  • 81 -- daje pojedyncze cyfry bez 8
  • 9801 -- daje pary cyfr bez 98
  • 998001 -- daje trójki cyfr bez 998
  • 99980001 -- daje czwórki cyfr bez 0000 i 0001 (nie wiem, jak z końcówką, ale podejrzewam, że brakuje 9998)
  • ...
0

Słusznie podejrzewasz, wystarczy wyświetlić troszkę ponad 40 tys. cyfr.

    mianownik=new BigDecimal(99980001);
    mc=new MathContext(40000);
    wynik=licznik.divide(mianownik,mc);
    System.out.println(wynik);

Ja zażyczyłem sobie równe 40 tys. cyfr. Starczyło, bo java wyświetliła liczbę w postaci 1.000...*10-8

0

@rincewind
Rozpatrzmy (1/99)^2 czyli 1/9801.
Mamy kwadrat 0.0101010101010101010101010101010101(01), czyli rozpisując to na dodawanie:

0.00010101010101010101010101010101010101... +
0.00000101010101010101010101010101010101... +
0.00000001010101010101010101010101010101... +
0.00000000010101010101010101010101010101... +
0.00000000000101010101010101010101010101... +
0.00000000000001010101010101010101010101... +
....
0.00010203040506070809101112131415161718...

Jak dojdzie w tych dwucyfrowych sumach do więcej niż 100, to poprzednie są zwiększane o jeden, czyli po 200 cyfrach 00->01, 01->02 itd. czyli też zmienia się 99->00 i przez to 98->99 gdzie to zwiększanie się kończy. Dla tego 98 nie ma w rozwinięciu.

Niezbyt matematyczne wytłumaczenie, ale ja to tak zrozumiałem.

Edit: głupi błąd

0

Odkopuję, bo znalazłem bardzo ładne i łopatologiczne wytłumaczenie:

0

Inna ciekawa sztuczka. Mnożenie przez 52, najlepiej liczby parzyste <=48 . Wyjaśnienie bardzo proste i pozostawiam je wam.

0

wystarczy odjąć od jedności żeby odliczać w dół:
1 - 1/998001 = 0,999998997996995994993992...

nie sprawdzałem co się dzieje na końcu.


 > ##### othello napisał(a)
> Mnożenie przez 52, najlepiej liczby parzyste <=48

możesz oświecić? bo ja nie widzę nic nadzwyczajnego

![user image](http://wswiktor.fm.interia.pl/4p/n52.png)
0

możesz oświecić? bo ja nie widzę nic nadzwyczajnego

Przyjrzyj sie uważnie:
4452 = 2288
44/2 = 22
44
2 = 88

2 pierwsze i 2 ostatnie cyfry wyniku

2

Tytuł wątku:

Dzielenie przez 1/998001

prościej chyba będzie

Mnożenie przez 998001

<b=zapach trolla o poranku></b>

1 użytkowników online, w tym zalogowanych: 0, gości: 1