Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Avatar
fejjaaas
Člen
Avatar
fejjaaas:16.11.2013 20:40

Zdravím vás, mám takový zajímavý problém. Jak mohu počítat s 50-cifernými čísly, když číselný datový typ ulong obsahuje těch cifer max. 20?? Předem děkuji za reakce :-)

 
Odpovědět
16.11.2013 20:40
Avatar
Odpovídá na Theodor Johnson
Michal Žůrek - misaz:16.11.2013 20:58

anebo si to napsat sám.

 
Nahoru Odpovědět
16.11.2013 20:58
Avatar
fejjaaas
Člen
Avatar
fejjaaas:18.11.2013 12:32

Děkuji :-)

 
Nahoru Odpovědět
18.11.2013 12:32
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na fejjaaas
David Hartinger:18.11.2013 13:22

Od .NETu 4 je přímo obsažený tento datový typ, nemusíš používat žádnou knihovnu.

Editováno 18.11.2013 13:22
Nahoru Odpovědět
18.11.2013 13:22
You are the greatest project you will ever work on.
Avatar
fejjaaas
Člen
Avatar
Odpovídá na David Hartinger
fejjaaas:18.11.2013 16:48

A jaký je potřeba zadat jmenný prostor?? Našel jsem na webu, tak jsem zkusil tohle: using System.Securi­ty.Cryptograp­hy a BigInteger jsem tam nenašel, vím že je chyba u mě, ale nevím kde :-(

 
Nahoru Odpovědět
18.11.2013 16:48
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na fejjaaas
David Hartinger:18.11.2013 16:52

V Cryptography určitě nebude, co by tam dělal? Je v System.Numerics. Když nevíš namespace, Visual Studio ti ho doplní samo, stačí na ten podtržený výraz kliknout.

Nahoru Odpovědět
18.11.2013 16:52
You are the greatest project you will ever work on.
Avatar
coells
Tvůrce
Avatar
Odpovídá na David Hartinger
coells:18.11.2013 17:51

V projektu chybí potřebné DLL, postup pro přídání je následující:

  1. klikni pravým tlačítkem na "References" v projektu (v Solution Exploreru)
  2. vyber si z menu "Add Reference"
  3. v otevřeném okně se přepni na levou záložku ".NET"
  4. najdi si knihovnu "System.Numerics" a přes OK ji přidej do projektu

Teď už budeš mít namespace System.Numerics k dispozici.

 
Nahoru Odpovědět
18.11.2013 17:51
Avatar
coells
Tvůrce
Avatar
coells:18.11.2013 17:56

Čísla o 50ti číslicích jsou ještě malá, takže BigInteger stačí, ale pokud bys někdy potřeboval čísla přesahující tisíce nebo miliony číslic, pak existuje knihovna GMP (napsaná v C) včetně C# wrapperu, která umí velkou spoustu funkcí a velice rychle počítá i obrovská čísla.

http://gnumpnet.codeplex.com/

 
Nahoru Odpovědět
18.11.2013 17:56
Avatar
Odpovídá na coells
Neaktivní uživatel:18.11.2013 17:59

Můžu technickou? Proč by někdo chtěl pracovat s číslem který má miliony číslic :D? Neříkám že je to blbost, jenom mě nenapadá žádný důvod.

Nahoru Odpovědět
18.11.2013 17:59
Neaktivní uživatelský účet
Avatar
Odpovídá na coells
Luboš Běhounek Satik:18.11.2013 18:02

DotNetí BigInteger by měl umět i čísla o miliónech číslic.

Nahoru Odpovědět
18.11.2013 18:02
https://www.facebook.com/peasantsandcastles/
Avatar
coells
Tvůrce
Avatar
Odpovídá na Luboš Běhounek Satik
coells:18.11.2013 18:06

To ano, zkus si je ale vynásobit nebo hledat prvočinitele nebo jednoduše převést číslo z desítkové do šestnáckové soustavy... Složitější výpočty mohou trvat i hodiny.

V jedné aplikaci jsem potřeboval hledal společné dělitele poměrně velkých čísel a bylo jich mnoho. BigInteger mi odpověď nedal ani za hodinu. GMP bylo hotové za minutu.

GMP umí obrovskou spoustu funkcí, které jsou implementované s ohledem na rychlost. Ale jak jsem řekl, pro 50 číslic je BigInteger dostačující.

 
Nahoru Odpovědět
18.11.2013 18:06
Avatar
coells
Tvůrce
Avatar
Odpovídá na Neaktivní uživatel
coells:18.11.2013 18:09

Třeba při testování hustoty informace v souboru s uniformním rozložením dat. :-D

 
Nahoru Odpovědět
18.11.2013 18:09
Avatar
Odpovídá na coells
Neaktivní uživatel:18.11.2013 18:25

Fajn, jsem teď o mnoho chytřejší(ir.) :D

Nahoru Odpovědět
18.11.2013 18:25
Neaktivní uživatelský účet
Avatar
coells
Tvůrce
Avatar
Odpovídá na Neaktivní uživatel
coells:18.11.2013 18:40
:-D

V podstatě je to jednoduché. Máš veliký soubor s náhodnými daty a chceš zjistit, jestli soubor zůstane náhodný, i když se na něj podíváš z jiného úhlu. K tomu se používají opravdu, ale opravdu veliké polynomy a zkouší se, jestli náhodou v nějakém případě není soubor méně náhodný. Já jsem to používal při analýze dat pro velice specializovanou kompresi.

 
Nahoru Odpovědět
18.11.2013 18:40
Avatar
Odpovídá na coells
Neaktivní uživatel:18.11.2013 21:04

super, díky za snahu, teď jsem o něco chytřejší :) (!=ir. :D )

Nahoru Odpovědět
18.11.2013 21:04
Neaktivní uživatelský účet
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 16 zpráv z 16.