我需要用C#计算(9173501*9173502*9173504)%9173503;
我需要用C#计算我需要用C#计算(9173501*9173502*9173504)%9173503;,c#,C#,我需要用C#计算(9173501*9173502*9173504)%9173503;结果=2,但C#无法计算。 如果您有任何想法,请帮助我。在开始计算之前,请将您的数字转换为大整数: Console.WriteLine((new BigInteger(9173501)*9173502*9173504)%9173503); // Output: 2 不需要使用大整数 使用以下公式: (x * y) % k = ((x % k) * (y % k)) % k 这样,您可以将模应用于两个数的乘积,
(9173501*9173502*9173504)%9173503
;结果=2,但C#无法计算。
如果您有任何想法,请帮助我。在开始计算之前,请将您的数字转换为大整数:
Console.WriteLine((new BigInteger(9173501)*9173502*9173504)%9173503);
// Output: 2
不需要使用大整数 使用以下公式:
(x * y) % k = ((x % k) * (y % k)) % k
这样,您可以将模应用于两个数的乘积,每个数都是<9173503
,因此此乘积适合长的
注意:添加时也是如此:
(x + y) % k = ((x % k) + (y % k)) % k
还有减法,稍有变化:
(x - y) % k = ((((x % k + k) % k) - ((y % k + k) % k)) % k + k) % k
但是,它不适用于分割:
(4 / 2) % 3 = 2
4 mod 3 = 1
2 mod 3 = 2
1 / 2 != 2
如果没有biginger
,您无法直接计算它,但从数学上讲,它相当于:
((long)9173501 % 9173503) * (9173502 % 9173503) * (9173504 % 9173503) % 9173503
这是一道数学题,不是编程题
正如您看到的,这些数字彼此非常接近,因此替换n=9173503
将得到:(n-2)(n-1)(n+1)%n
打开括号,您将得到以下多项式:n^3-2*n^2-n+2
,剩余的n
将是:
- 每n>2,则为2
- 0表示n=1,2
这意味着不仅(9173501*9173502*9173504)%9173503=2
,而且13^127^61*(13^127^61+1)*(13^127^61+3)%(13^127^61+2)
也是2
,这很可能是用C或其他编程语言无法计算的。您的问题中没有任何细节。尝试使用?使用。向我们展示代码!干杯。我不是数学专家,但我想知道公式是否可以改写为:(9173501%9173503)*(9173502%9173503)*(9173504%9173503)如果知道结果,为什么要计算它DYou可以在不使用BigInteger
的情况下执行此操作。你只需要一个long
@IVlad,我也这么认为,但是var result=(x*y*z)%m当x
、y
、z
和m
都是长的s.@Khan时,code>会导致-6942781
——当然,一般来说。对于这个问题,只要你每两次乘法取一次模,它就不应该太长。+1或者看一些简单的数字((k-2)*(k-1)*(k+1))%k=(-2)*(-1)*1=2。。。不需要使用任何计算,只需玩数学+1@AlexeiLevenkov-但是当计算机可以为你做的时候,为什么还要使用智能呢?:)我认为有些人有时已经失去了思考的能力。@AlexeiLevenkov+1awesome@AlexeiLevenkov我可以假设你是在美国境外接受教育的吗?当我看到这些数字的时候,我也这么想,但是你比我赢了三个月。。。在我看来,这无疑是正确的解决办法!在所有答案中最好地运用代数!