C#模运算符(%)不工作?[英] C# modulus operator (%) not working?

本文是小编为大家收集整理的关于C#模运算符(%)不工作?的处理方法,想解了C#模运算符(%)不工作?的问题怎么解决?C#模运算符(%)不工作?问题的解决办法?那么可以参考本文帮助大家快速定位并解决问题。

问题描述

你好 :)

我正在尝试编写代码来计算 200,000 到 400,000 之间的质数之和.

但是当我运行它时,它给了我 0 结果!调试它,似乎问题出在"%"运算符上!谁能告诉我怎么了?(以下功能 - 我将代码拆分太多以帮助调试,对此感到抱歉).

private string SolveProblem2(){double loopEnd = 200000, numCurrent = 200000;BigInteger sum = new BigInteger("0");for (int i = 0; i< loopEnd ; i++, numCurrent++){SolveProblem2_1(numCurrent, ref sum);}return sum.ToString();//返回最终结果}private void SolveProblem2_1(double numCurrent, ref BigInteger sum){int j = 2;double res = 0;while (j < numCurrent){res = num当前 % j;if (res == 1){j++;}其他{break;}}if (j == numCurrent){sum = sum.add(new BigInteger(numCurrent.ToString()));}}


请注意,我使用 200,003 进行测试,因为它是质数(由朋友的另一个代码给出),但根据我的代码,它可以除以 3,余数不是 1!
解决方案
这个应该是

if (numCurrent % j== 0)
?

如果您采取 10 % 3,则提醒将是 1.. 请参见此处的示例(我知道它的 VB,但示例仍然有效:)):
http://msdn.microsoft.com/en-us/library/se0w9esz%28v=vs.110%29.aspx[^]

本文地址:https://www.itbaoku.cn/post/1356095.html