Objective-c上的biginteger

15 objective-c biginteger

任何人都可以BigInteger在objective-c中为提供PowMod功能的实现提供代码吗?

iwa*_*wat 10

我希望回答这个问题还为时不晚.

您可以尝试使用开源和免费的" LibTomMath "(作者将此项目作为公共领域赠送).它开箱即用,没有任何配置,只需将所有bn _*.c和tommath*.h放到你的Xcode项目中就可以了.

#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);
Run Code Online (Sandbox Code Playgroud)


Her*_*oni 7

作为普通的C库,openssl的BN应该能够做到.

BN_mod_exp()计算a到p次幂模m(r = a ^ p%m).此函数比BN_exp()使用更少的时间和空间.


Kir*_*ins 7

您可以尝试https://github.com/kirsteins/JKBigInteger它类似于Java的BigInteger类.它有mod和pow方法,你可以结合起来.


Bar*_*ark 4

Cocoa 库中最接近的内置类为NSDecimalNumber尾数 x 10^exponent 范围提供以 10 为基数的算术(因此可以处理纯整数算术),其中尾数是 38 位浮点数,指数是 -128 到 128。涵盖了您需要的范围,有乘法和幂方法。否则,由于 Objective-C 是 C 的超集,因此您可以找到的任何 bigint 的 C 实现都足够了。