Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我需要用C#计算(9173501*9173502*9173504)%9173503;_C# - Fatal编程技术网

我需要用C#计算(9173501*9173502*9173504)%9173503;

我需要用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 这样,您可以将模应用于两个数的乘积,

我需要用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
这样,您可以将模应用于两个数的乘积,每个数都是
<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)%mx
y
z
m
都是
长的
s.@Khan时,code>会导致
-6942781
——当然,一般来说。对于这个问题,只要你每两次乘法取一次模,它就不应该太长。+1或者看一些简单的数字((k-2)*(k-1)*(k+1))%k=(-2)*(-1)*1=2。。。不需要使用任何计算,只需玩数学+1@AlexeiLevenkov-但是当计算机可以为你做的时候,为什么还要使用智能呢?:)我认为有些人有时已经失去了思考的能力。@AlexeiLevenkov+1awesome@AlexeiLevenkov我可以假设你是在美国境外接受教育的吗?当我看到这些数字的时候,我也这么想,但是你比我赢了三个月。。。在我看来,这无疑是正确的解决办法!在所有答案中最好地运用代数!