如何在C#程序中获取索引无值 公共类程序 { //程序工作正常 公共静态void Main(字符串[]args) { Console.WriteLine(“输入号码:”); int num=int.Parse(Console.ReadLine()); 布尔值isPrime=true; 对于(inti=2;i

如何在C#程序中获取索引无值 公共类程序 { //程序工作正常 公共静态void Main(字符串[]args) { Console.WriteLine(“输入号码:”); int num=int.Parse(Console.ReadLine()); 布尔值isPrime=true; 对于(inti=2;i,c#,visual-studio,c#-4.0,software-design,C#,Visual Studio,C# 4.0,Software Design,如果我正确理解了你的问题,这应该会给你你所需要的 public class Program { //Program Working Correctly public static void Main(string[] args) { Console.WriteLine("Enter the Number : "); int num = int.Parse(Console.ReadLine()); B

如果我正确理解了你的问题,这应该会给你你所需要的

public class Program
{

    //Program Working Correctly

    public static void Main(string[] args)
    {

        Console.WriteLine("Enter the Number : ");
        int num = int.Parse(Console.ReadLine());
        Boolean isPrime = true;
        
        for (int i = 2; i <= num; i++)
        {
            for (int j = 2; j <= num; j++)
            {
                if (i != j && i % j == 0)
                {
                    isPrime = false;
                    break;
                }
            }
            if (isPrime)
            {
                Console.WriteLine(i);
            }
            isPrime = true;
        }
    }
}
公共静态bool IsPrime(整数)
{
如果(number==1)返回false;
if(number==2)返回true;
if(数字%2==0)返回false;
var边界=(int)数学层(Math.Sqrt(number));
对于(int i=3;i 0)
{
i++;
if(IsPrime(i))索引--;
}
返回i;
}
IsPrime(n)
取自此问题:

我只是简单地将它包装在一个函数中,该函数通过您提供的任何索引查找素数

这里有一个dotnetfiddle让你看到它的工作


您可以使用
GetPrimeByIndex(n)
获取给定索引处的素数,而不必先创建列表,然后从该列表中逐个索引获取项目。这可能不是您想要的,但这就是我阅读您的问题的方式。

我可能会更改您的代码,使用迭代器-change
控制台返回
IEnumerable
的方法。Write行(i)
基本上产生i
。然后你可以使用
素数()。ElementAt(index-1)
你想找到10以下的素数,然后通过索引得到结果,还是说你只想给出一个索引,就像
getPrimeNumber(5)
将返回第五个素数?是的,先生,我想通过索引得到一个结果#你想得到一个更接近你给出的数字或有史以来第一个素数的结果吗?因为这是非常不同的。或者你想得到所有的索引,直到这个数字,假设你给出100,那么它将通过素数存在的位置从1到100?是的,先生,如果我输入r索引否它将通过素数从1到100存在的位置?
public static bool IsPrime(int number)
{
    if (number == 1) return false;
    if (number == 2) return true;
    if (number % 2 == 0)  return false;

    var boundary = (int)Math.Floor(Math.Sqrt(number));

    for (int i = 3; i <= boundary; i+=2)
    {
        if (number % i == 0)  return false;
    }

    return true;        
}

public static int GetPrimeByIndex(int index)
{
    var i = 2;

    while (index > 0)
    {
        i++;
        if (IsPrime(i)) index--;                
    }

    return i;
}