我有一个包含20个数字的数组,我必须计算数组中的质数。我想出了这段代码(它是一个简单的素数检查器),但是当我尝试使用for
循环将其实现到数组中时,它将无法工作。
int primcounter = 0;
for (int i = 0; i <= array.Length; i++)
{
int divider = 0;
for (int j = 1; j <= array[i]; j++)
{
if (array[i] % j == 0)
{
divider++;
}
else
{ }
}
if (divider == 2)
{
primcounter++;
}
}
Console.WriteLine(primcounter + "Primes are in the array");
目标是测试数组中的每个数字是否为质数,如果为质数,则将primcounter
增加1
。
您可以使用linq实现为扩展方法
using System;
using System.Linq;
using System.Collections.Generic;
namespace Test
{
public static class Math
{
public static bool IsPrime(this int candidate)
{
for (int denominator = 2; denominator < candidate - 1; denominator++)
if (candidate % denominator == 0) return false;
return true;
}
}
class Program
{
static void Main(string[] args)
{
Console.WriteLine(new List<int>() {
1, 2, 3, 4, 5, 6, 7, 8, 9, 10,
11, 12, 13, 14, 15, 16, 17, 18, 19, 20
}.Where(candidate => candidate.IsPrime()).Count());
Console.ReadKey();
}
}
}