C# 如何跳过循环中我在循环时得到的索引

C# 如何跳过循环中我在循环时得到的索引,c#,performance,loops,C#,Performance,Loops,示例:我正在验证for循环中从1到1000的一些数字。 也许数字50是一个有效的数字,所以所有可由50设计的数字都可以跳过(100150200250,…),因为它们也是有效的 因此,我不需要再次验证这些数字来提高性能,并将循环进程从1000个缩短到60个 有办法吗 因为您要求“验证”机制: 我想验证“友好”数字。这是“欧拉问题21计划”的一部分。我只是想改进我的解决方案 友好数是例如220和284,因为这两个数的适当因子之和就是它们自己的数 220的除数:1,2,4,5,10,11,20,22,

示例:我正在验证for循环中从1到1000的一些数字。

也许数字50是一个有效的数字,所以所有可由50设计的数字都可以跳过(100150200250,…),因为它们也是有效的

因此,我不需要再次验证这些数字来提高性能,并将循环进程从1000个缩短到60个

有办法吗

因为您要求“验证”机制:

我想验证“友好”数字。这是“欧拉问题21计划”的一部分。我只是想改进我的解决方案

友好数是例如220和284,因为这两个数的适当因子之和就是它们自己的数

220的除数:1,2,4,5,10,11,20,22,44,55和110=>和284

284的除数:1,2,4,71和142=>和220

所以这两个数字都是“友好”数字。如果我用284验证220,我不需要再次检查284,可以跳过它

List<int> ListOfAmicableNumbers = new List<int>();


for (int i = 1; i <= 1000; i++)
{
    if(IsAmicableNumber(i))
    {
        ListOfAmicableNumbers.Add(i);
    }
}
List ListOfAmicableNumbers=new List();
对于(inti=1;i
intskipvalue=50;

对于(int i=1;我看不到您迄今为止所做的尝试,因此很难提出任何建议。目前为止,我不知道如何解决此问题。因此,我无法向您提供示例:(您能否显示验证代码?这可能会有所帮助。您跳过验证的标准是什么?您可以编写一个筛选器(
除以50()
)然后用它来
继续;
请用示例数据发布输入数据示例和预期结果/行为。我们不知道您正在尝试做什么。是的,可能更干净的解决方案,这是我提出的,但您比我快,Zhavat.)顺便说一句……这是一个不错的素数检测算法,但您必须在值
2
处开始迭代-所有东西都可以被
1
整除,
0
导致DBZ异常。我不除以“I”,而是除以skipValue(“w”)在列表中!我想当这个问题没有数学解时,这个解是迄今为止最聪明的。
int skipValue=50;
for(int i=1; i<=1000;i++)
{
   if(i%skipValue == 0) continue;
   //verification goes here...
}
List<int> skipValues = new List<int>();//fill them somewhere else...
for(int i=1; i<=1000;i++)
{
   if(skipValues.Any(w => i%w == 0)) continue;
   //verification goes here...
   //after verification you may like to add this value into the list:
   skipValues.Add(i);
}