Kezdőoldal » Tudományok » Egyéb kérdések » Milyen osztót kell alkalmazni,...

Milyen osztót kell alkalmazni, hogy a maradék érdekes legyen?

Figyelt kérdés

Van néhány nagy, mondjuk 12-24 számjegyű általános, véletlenszerű szám.

Hogyan lehet olyan osztót találni hozzájuk, hogy a maradék érdekes legyen. 7-10 számjegyű osztó, maradék.

Érdekes a maradék, ha pl.:

kerek szám, 1-2 számjegy+nullák

1 v. 2-féle számjegyből áll (váltakozva)

sorban növekvő, ill. csökkenő számjegyek

- szóval olyan, ami ránézésre könnyen megjegyezhető, mert spec.

Példák (szám, osztó1-2, maradék):

312190173402122873, 515746862, 605316670, 333333333

283202450198951312, 396801008, 713714039, 100000000

219528166359397171, 427252650, 513813469, 123454321

120091645083589884, 657293157, 182706367, 314159265 (pi)

Van-e valami módszer ilyen osztó keresésére, vagy csak a végigpróbálgatás? Mindig van ilyen, esetleg több ilyen osztó?



2018. aug. 9. 12:15
 1/10 Wadmalac ***** válasza:

Valószínűleg mindre van megfelelő matematikai módszer, csak mindre másik.

Egyenként kéne végignézni.

Tetszik a téma, csak sajnos most nincs időm utánaszámolgatni, így szégyenkezve várom én is a megoldásokat.

Szerintem ki kéne pécézni elsőnek egy verziót, mondjuk ismétlődő szakaszos tizedes tört mint maradék.

2018. aug. 9. 12:40
Hasznos számodra ez a válasz?
 2/10 anonim ***** válasza:

A gond már ott kezdődik, hogy "érdekes". Ami az egyik embernek az, a másiknak nem.

Ott folytatódik, hogy mi a megfelelő motiváció a keresésre.

Ezután jön, hogy van-e elegendő ismert a kereséshez.

Végül, ha már mind összejött, általában felteszik a kérdést: mi a haszna? (közkeletűen, mire jó nekem). És erre csak kevesen tudnak értelmes választ.

Ez az oka annak, hogy kevés a vállalkozó.

2018. aug. 9. 15:19
Hasznos számodra ez a válasz?
 3/10 A kérdező kommentje:

#2: "érdekes": ha túl általánosnak tűnik, akkor vedd fixen úgy, ahogy megadtam.

motiváció, mi a haszna? : tanulnék belőle

Ennek feltétele a hasznos válasz, ami, ha nem is valószínű, nem tartottam kizártnak.

Haszontalannak tűnő dolgokból, pl. a pí sok billió számjegyének, vagy nagyon sok/nagy prímszámnak a kiszámítása, is lehet jó, hasznos következtetéseket levonni.

(számjegyek, ill. prímek eloszlása)

2018. aug. 9. 15:53
 4/10 anonim ***** válasza:

@Wadmalac

Valamit félreértettél vagy ha nem akkor nem tudom hogy gondoltad. Itt maradékos osztásról van szó.

Vagyis amit a kérdező ír pl. 312190173402122873 = 515746862*605316670 + 333333333


@Kérdező

"Hogyan lehet olyan osztót találni hozzájuk, hogy a maradék érdekes legyen."

Ez azért félreérthető mert egész számok körében akkor osztója egy szám a másiknak, ha maradékos osztással elosztva vele 0 a maradék. A kongruens szó lett volna a megfelelő.

Az hogy mi az hogy érdekes maradék, ezt nem tudom megfogni, mint ahogy egy valaki ki is fejtette már. Jó hír azonban, hogy e nélkül is meg lehet oldani. Mint tudjuk, hogy példát írni rá könnyű mert csak veszünk 2 számot, hozzáadunk annyit amennyi maradékot akarunk és a maradékhoz és a számhoz megvan a megfelelő osztó. Viszont ha az a kérdés, hogy milyen másik osztó van hozzá akkor már "bajba" vagyunk. Illetve ha csak a "semmiből" kapunk egy számot és egy maradékot na akkor mond meg, hogy mikor jön ki ez a maradék! Ez esetben a megoldás visszavezethető az osztók keresésre. Úgy hogy n szám esetén n-modulo (maradék) számnak az osztóit keressük és ezek közül nekünk a modulo-nál nagyobb osztók kellenek, hiszen ekkor és csak ekkor fog teljesülni, hogy annyi legyen a maradék amennyit akartunk, de az is lehet hogy ez sose teljesül. Az osztók keresésén meg lehet gyorsítani a brute force-nál gyorsabb, ha az osztók keresését visszavezetjük a prímfaktorizációra. Itt a próbaosztást gyorsíthatjuk úgy hogy elég csak a prímekkel elvégezni, hiszen ha egy számmal osztható ami összetett akkor ennek a számnak a prímtényezőivel is osztható lesz, ellenkező esetben meg azokkal sem. Természetesen a négyzetgyökéig kell nézni maximum, hiszen ha a négyzetgyökénél nagyonobb prímtényezője van akkor bizotsan van négyzetgyökénél kisebb prímtényezője. Kis prímekkel érdemes még bepróbálni a gyorsítás miatt, a nagyobbakkal meg Pollard Rho Brent prímfaktorizációval, de persze lehet más különböző prímfaktorizációt is használni melyekről matematikus szakos szakdolgozatot is láttam már régebben. Ugye ez nagyon kemény feladat is lehet még géppel is, a különböző prímfaktorizációs gyorsító algorimtusokkal is, bár elég jó eredményt hoz ki a sima brute force-hoz képest. A prímtesztelésre érdemes Miller-Rabin prímtesztel ellenőrizni hogy prím e, gyorsabb mint prímtényezőjét keresni, hogy van e neki. Amikor megvannak a prímtényezők akkor ezekből kell képezni az összes szorzatot melyek mindegyike úgy van előállítva hogy el van hagyva valami a prímtényezők közül, kivéve amikor mind szerepel.

Egy online futtatható python kód hozzá : [link]

Használati utasítás:

STDIN-hez beírni szóközzel elválsztva az adott számot és az osztót, az Exceute-al lefuttatni és megkeresi az összes ilyen számot.

Pl.:

Bemenet:


283202450198951312 100000000


Kimenet:


198400504

396801008

713714039

1427428078

2854856156

5709712312

11419424624

17700153131184457

35400306262368914

70800612524737828

141601225049475656

283202450098951312


Nem én találtam fel a meleg vizet, feltüntettem, hogy melyik kódrészlet honnan származik, kivéve amit én írtam hozzá. Pl. a primesbelow függvény az a kis prímeket állítja elő gyorsítás miatt Eratosztenészi szitával egy stackoverflow-ról származó kód.

2018. aug. 10. 03:51
Hasznos számodra ez a válasz?
 5/10 Wadmalac ***** válasza:

"@Wadmalac


Valamit félreértettél vagy ha nem akkor nem tudom hogy gondoltad. Itt maradékos osztásról van szó."

Bocsánat, tényleg törtet írtam, hülye beidegződés miatt. De ismétlődő számsort akartam.

2018. aug. 10. 07:06
Hasznos számodra ez a válasz?
 6/10 anonim ***** válasza:

"De ismétlődő számsort akartam."


Ha a periodikusan ismétlődő csupa nullákat is belevesszük akkor mindig ismétlődik. Ha meg a szokásos módon nem vesszük bele, akkor meg abban az esetben nem ismétlődik, ha 10^n-szerese a hányadosnak egész szám (ahol n tetszőleges pozitív egész).


Aki ért hozzá az tudja hogy így miért jobb, hogy egyetlen sort átraktam a kódba (a main-be keresd): [link]

Egyébként az előző se számol se lassabban se rosszul.

2018. aug. 10. 10:04
Hasznos számodra ez a válasz?
 7/10 A kérdező kommentje:

#4: Köszönöm!

Közben már én is rájöttem, hogy ez milyen egyszerű:

az adott számból csak kivonom a kívánt maradékot, és faktorizálom.

Ha van olyan prímtényező, ill. ezeknek szorzata, ami nagyobb, mint a kívánt maradék, és legfeljebb 10-jegyű, akkor jó.

Pl: n=416689440590993531

for i in range(11,23):

o=i*10**7//99

print(o,end=':')

factu(n-o)

----------------------

1111111:416689440589882420= 2^2*5*19*1096551159447059 t: NEM

1212121:416689440589781410= 2*5*@13113391*3177587251 t: JÓ

1313131:416689440589680400= 2^4*5^2*61*101*169083525641 t: JÓ

1414141:416689440589579390= 2*5*23*6607*@335941*816239 t: JÓ

1515151:416689440589478380= 2^2*5*47*@746873*593523449 t: JÓ

1616161:416689440589377370= 2*5*41668944058937737 t: NEM

1717171:416689440589276360= 2^3*5*11*17*@243109*229144723 t: JÓ

1818181:416689440589175350= 2*5^2*131*761*3109*26888453 t: JÓ

1919191:416689440589074340= 2^2*5*@3747589*5559433553 t: JÓ

2020202:416689440588973329= 3*59*73*32249008636249 t: NEM

2121212:416689440588872319= 3*11*229*51427*1072190321 t: JÓ

2222222:416689440588771309= 3^3*@125639*122835602353 t: NEM

Elég sok maradékhoz található megfelelő osztó. (@:Pollard Rho módszerrel kapott 64k-nál nagyobb osztó)

2018. aug. 10. 13:22
 8/10 anonim ***** válasza:

Ezt nem értem.

Mi az a factu?

"t: NEM" "t: JÓ" mik ezek?


"Ha van olyan prímtényező, ill. ezeknek szorzata, ami nagyobb, mint a kívánt maradék, és legfeljebb 10-jegyű, akkor jó."


"1616161:416689440589377370= 2*5*41668944058937737 t: NEM"

Ha ezt adom inputnak : 416689440589377370 1616161 akkor nem sorolom fel az összeset, de kiadja megoldásnak 12626952745083673 ezt is ami 17 jegyű ami van legalább 10 jegyű.


Ha 416689440589377370 - 1616161 kivonod vagyis 416689440587761209 1616161 lesz az input akkor ott van megoldásnak pl. 52086180073268131

De ha 416689440589377370 + 1616161 veszed vagyis

416689440590993531 1616161 akkor megoldás pl a 83337888117875474. Egyszerűen nem is értem mi az hogy nem jó. Miért nem jó?

2018. aug. 10. 16:20
Hasznos számodra ez a válasz?
 9/10 A kérdező kommentje:

"Mi az a factu?" : a faktorizáló eljárásom neve

Pl: n=416689440590993531 a véletlen szám, ebből kivonom az "érdekes" maradékot, 1616161-et, így

n-1616161 = 416689440589377370-et kell faktorizálni, ami

416689440589377370= 2*5*41668944058937737

vagyis "t: NEM" = tehát nem lehet hozzá 7-10 számjegyű osztót találni (2. sorban kikötöttem).

"t: JÓ" = tehát jó, azaz, van olyan prímtényező, ill. ezeknek szorzata, ami nagyobb, mint a kívánt maradék, és 7-10 számjegyű.

2018. aug. 10. 18:31
 10/10 anonim ***** válasza:
Ok.
2018. aug. 11. 10:12
Hasznos számodra ez a válasz?

Kapcsolódó kérdések:





Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!