如何将素数检查器实现到需要计数素数的数组中?

问题描述 投票:0回答:1

我有一个包含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

c# arrays for-loop primes divide
1个回答
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();
        }
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.