因此,简而言之,当与大量数字一起使用时,模数运算符将返回错误的输出。请帮忙。
我认为问题可能与值类型有关,所以我尝试将所有内容都转换为所有类型的int并加倍。我尝试使用此(^)和Math.Pow()。
df['Total'] = df['COUNT_MONTHS'].apply(lambda x : np.nan if x > 3 else ??)
我希望输出为应有的7770,但我从未得到它。
答案 0 :(得分:5)
使用BigInteger
。 int
甚至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;
}