模运算符(%)对大量数字无效

时间:2019-09-12 15:51:22

标签: c#

因此,简而言之,当与大量数字一起使用时,模数运算符将返回错误的输出。请帮忙。

我认为问题可能与值类型有关,所以我尝试将所有内容都转换为所有类型的int并加倍。我尝试使用此(^)和Math.Pow()。

df['Total'] =  df['COUNT_MONTHS'].apply(lambda x : np.nan if x > 3 else ??)

我希望输出为应有的7770,但我从未得到它。

2 个答案:

答案 0 :(得分:5)

使用BigIntegerint甚至unsigned long太小,无法容纳产品。用double计算整数值也是有问题的。

BigInteger的静态方法ModPow正是为您准备的:

int N = 10379
int S1 = 3701;
int d = 37;
BigInteger T1 = BigInteger.ModPow(S1, d, N); // 7770

答案 1 :(得分:0)

首先,请忘记^,因为这是XOR运算符而不是幂运算符。您可以使用for循环将其乘以d次,然后每次应用%

int i, T1;
T1 = 1;
for (i = 0; i < d; i++)
{
    T1 *= S1;
    T1 %= N;
}