Czy ktoś może podać kod dla implementacji BigInteger
w celu-c, który zapewnia funkcję PowMod?biginteger on Objective-c
Odpowiedz
Najbliższa klasa wbudowana w bibliotekach kakao to NSDecimalNumber
, która zawiera arytmetykę base-10 (i tak może obsługiwać wyłącznie arytmetyczną liczbę całkowitą) dla wykładnika mantysy x 10 ^, gdzie mantysa jest 38-bitowym zmiennoprzecinkowym i wykładnik jest - 128 do 128. Jeśli obejmuje to zakres, którego potrzebujesz, są metody mnożenia i zasilania. W przeciwnym razie, ponieważ Objective-C jest nadzbiorem C, wystarczająca będzie dowolna implementacja C biginta, którą można znaleźć.
Jako zwykła biblioteka C, openssl's BN powinien być w stanie to zrobić.
BN_mod_exp()
oblicza a na p-ta moc modulo m (r = a^p% m). Ta funkcja zajmuje mniej czasu i przestrzeni niż BN_exp().
Mam nadzieję, że nie jest za późno, aby odpowiedzieć na ten wątek.
Możesz wypróbować "LibTomMath", która jest darmowa i darmowa (autor przekazuje ten projekt jako domenę publiczną). Działa po wyjęciu z pudełka bez żadnej konfiguracji, po prostu umieść wszystkie pliki bn _ * .c i tommath * .h w projekcie Xcode i gotowe.
#import "tommath.h"
mp_int number1, number2, number3;
mp_init(&number1);
mp_init(&number2);
mp_init(&number3);
mp_read_radix(&number1, "0a120edfff558c98a73015d5d67e8990", 16);
mp_read_radix(&number2, "12e6f45d698c7b7009a841c1348d6ff4", 16);
mp_mul(&number1, &number2, &number3);
char output[1000];
mp_toradix(&number3, output, 16);
NSLog(@"number3:%s", output);
mp_div(&number3, &number1, &number2, NULL);
mp_toradix(&number2, output, 16);
NSLog(@"number2:%s", output);
Można spróbować https://github.com/kirsteins/JKBigInteger Jest ona podobna do BigInteger
klasy Java. Posiada metody mod i pow, które można łączyć.
Działa idealnie! Świetna biblioteka trzeciej części! –
Dobra biblioteka, myślę, że to jest najlepsza odpowiedź. –
Wygląda na to, że wewnętrznie używa się "LibTomMath" (patrz odpowiedź wiiat). – LaborEtArs
- 1. ObjectiveC Parse Integer from String
- 2. Wdrożenie ObjectiveC protokół w szybkim
- 3. Dlaczego jest BigInteger (String), ale nie BigInteger (długa)?
- 4. BigInteger w Kotlin
- 5. od byteArray do bigInteger
- 6. Java BigInteger liczby pierwsze
- 7. Operacja bitowa Java Vs BigInteger
- 8. Java porównać integer i bigInteger
- 9. Jak przekonwertować ciąg na BigInteger?
- 10. Java BigInteger modInverse i modPow
- 11. Jak przekonwertować BigInteger na BigDecimal?
- 12. Konwersja z Integer, na BigInteger
- 13. Operator% dla BigInteger w java
- 14. ObjectiveC: gdzie zadeklarować prywatne właściwości instancji?
- 15. Dane źródłowe MongoDB: Konwersja BigInteger do ObjectId
- 16. Clojure BigInt nie jest Javą BigInteger
- 17. Czy BigInteger jest niezmienny czy nie?
- 18. Jak przypisać bardzo dużą liczbę do BigInteger?
- 19. Błąd podczas przydzielania dużą liczbę do BigInteger
- 20. jak przekonwertować BigInteger do String w Javie
- 21. jak wprowadzić typ BigInteger w java
- 22. Składnia ObjectiveC do określania nazwy protokołu w argumencie Metoda Argumenty
- 23. Pomoc z GCC i kodem ObjectiveC oraz Cygwin
- 24. Czy istnieje sposób na zawinięcie bloku ObjectiveC do wskaźnika funkcji?
- 25. ObjectiveC Kategoria nie jest importowana, ale nadal działa kod
- 26. Czy czas wywołania metody super klasy jest ważny w ObjectiveC?
- 27. Różnica między NSLog oraz sprawozdania printf dla ObjectiveC
- 28. Ruby on Rails on IIS?
- 29. Fatal Spin-On-Suspend/Stuck on ThreadID
- 30. Jak przekonwertować liczbę binarną na BigInteger w Javie?
To prawie na pewno nie jest to, czego szuka autor. 'NSDecimalNumber' używa systemu numerowania base-10 do kodowania i manipulowania liczbami, a nie (dużo) bardziej powszechnego base-2. System z numerem 10 jest zwykle używany, gdy zaangażowana jest waluta. W rzeczywistości może być niezgodne z prawem przetwarzanie numerów walutowych w systemach numeracji non-base-10, w zależności od jurysdykcji. – johne