¿Alguien puede proporcionar el código para una implementación BigInteger
en objetivo-c que proporciona una función PowMod?biginteger en Objective-c
Respuesta
La clase interna más cercana en las bibliotecas Cocoa es NSDecimalNumber
que proporciona aritmética de base 10 (y por lo tanto puede manejar aritmética de entero solamente) para el rango mantisa x 10^exponente donde mantissa es un flotador de 38 bits y el exponente es - 128 a 128. Si eso cubre el rango que necesita, existen métodos de multiplicación y potencia. De lo contrario, dado que Objective-C es un superconjunto de C, cualquier implementación C de bigint que pueda encontrar será suficiente.
Como biblioteca C simple, BN de openssl debería ser capaz de hacerlo.
BN_mod_exp()
calcula a la p-ésima potencia módulo m (r = a^p% m). Esta función usa menos tiempo y espacio que BN_exp().
Espero que no sea demasiado tarde para responder este hilo.
Puede probar "LibTomMath", que es de código abierto y gratuito (el autor regala este proyecto como de dominio público). Funciona de la caja sin ninguna configuración, simplemente ponga todo bn _ *. C y tommath * .h en su proyecto Xcode y ya está listo para comenzar.
#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);
Puede intentar https://github.com/kirsteins/JKBigInteger Es similar a la clase de Java BigInteger
. Tiene métodos mod y pow que puedes combinar.
¡Funciona a la perfección! ¡Gran biblioteca de la tercera parte! –
buena biblioteca, creo que esta es la mejor respuesta –
Parece que se usa internamente "LibTomMath" (ver la respuesta de iwat). – LaborEtArs
- 1. OutOfMemoryError en BigInteger
- 2. Bloques ObjectiveC equivalente en Java
- 3. % operador para BigInteger en java
- 4. tiempo de multiplicación en BigInteger
- 5. BigInteger in C?
- 6. BigInteger a Hexadeximal
- 7. Java: ¿Cómo usar BigInteger?
- 8. objectivec: fb publicar comentario error
- 9. ObjectiveC Parse Integer from String
- 10. Cómo convertir BigInteger a BigDecimal?
- 11. byte [] a BigInteger sin firmar?
- 12. cómo convertir BigInteger de cadena en Java
- 13. Cómo utilizar BigInteger en VS 2010
- 14. Números primos BigInteger de Java
- 15. ¿Se desborda BigInteger alguna vez?
- 16. ¿Cómo almacena BigInteger sus datos?
- 17. Conversión de Entero, a BigInteger
- 18. ¿Cómo eleva un BigInteger de Java a la potencia de un BigInteger sin hacer aritmética modular?
- 19. enviar una notificación desde javascript en UIWebView a ObjectiveC
- 20. Cómo dividir la nueva línea de NSString en ObjectiveC
- 21. ¿Cómo implementar un puente sin cargo en ObjectiveC/C?
- 22. obteniendo el error "invalid_client" en la muestra gdata-objectivec-client
- 23. ¿Puedo colocar un ObjectiveC @selector en un NSDictionary?
- 24. Pros y contras del uso de excepción en IOS/ObjectiveC
- 25. ¿Hay un límite superior para BigInteger?
- 26. Cambiar a BigInteger si es necesario
- 27. Java, comparando los valores de BigInteger
- 28. Clojure BigInt no es Java BigInteger
- 29. Generación segura de un BigInteger uniformemente aleatorio
- 30. ¿Hay un sustituto de Pow en BigInteger en F #?
Esto es casi seguro que no es lo que el autor está buscando. 'NSDecimalNumber' usa un sistema de numeración de base 10 para codificar y manipular números, no el (mucho) más común base-2. Un sistema de número de base 10 se usa generalmente cuando se trata de dinero en efectivo. De hecho, puede ser ilegal procesar números relacionados con la divisa en sistemas de numeración no basados en la base 10, según su jurisdicción. – johne