// 下面的代码用迭代生成器实现了一个可被迭代的类
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Net.Sockets;
using System.Text;
using System.Threading.Tasks;
namespace CRApp
{
class Program
{
static int Main(string[] args)
{
PrimeNumbers pn = new PrimeNumbers(2,100);
foreach (var item in pn)
{
Console.WriteLine(item);
}
return (0);
}
}
class PrimeNumbers : IEnumerable<int>
{
public int Minimum { get => this._Minimum;}
private int _Minimum = 0;
public int Maximum { get => this._Maximum;}
private int _Maximum = 0;
public PrimeNumbers(int minValue,int maxValue)
{
if (minValue < 2)
{
throw new ArgumentException("The minimum must be greater than or equal to 2","minValue");
}
else if (minValue >= maxValue)
{
throw new ArgumentException("The maximum value cannot be less than or equal to the minimum value","minValue");
}
else
{
this._Minimum = minValue;
this._Maximum = maxValue;
}
}
public IEnumerator<int> GetEnumerator()
{
for (int i = this._Minimum; i < this._Maximum; i++)
{
if (this.IsPrime(i))
{
yield return (i);
}
}
yield break;
}
IEnumerator IEnumerable.GetEnumerator()
{
return (this.GetEnumerator());
}
private bool IsPrime (int num)
{
for (int i = 2; i <= Math.Sqrt(num); i++)
{
if (num%i == 0)
{
return (false);
}
}
return (true);
}
}
}