Question

Cette application recevra un nombre "n". Après avoir reçu ce numéro, le programme doit montrer le premier n-ième dans la liste des nombres premiers. Par exemple, si l'utilisateur entre « 3 », le programme est censé afficher « 5 », parce que 5 est le troisième premier à partir de 2. Je sais que quelque chose ne va pas avec mon code, mais je ne sais pas où le problème est et comment je peux le réparer.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Determinar el n-esimo primo.");
            long n = Convert.ToInt64(Console.ReadLine()); // N lugar de primos
            long[] array = new long[n];
            long c=0;
            while (c >= 2) 
            { 
                if(siprimo(c++) == true)
                    for (long i = 0; i < n; i++)
                    {
                        array[i] = c;
                    }
            }

            Console.WriteLine(array[n - 1]);
            Console.ReadLine();
        }

        static private bool siprimo(long x)
        {
            bool sp = true;
            for (long k = 2; k <= x / 2; k++)
                if (x % k == 0)
                    sp = false;
            return sp;
        }
    }
}
Était-ce utile?

La solution

Plus:

int GetAnswer(int nprime) {
   if (nprime == 1) return 2;
   if (nprime == 2) return 3;

   int j;
   int n = 2; 
   int i = 5;

   while (n < nprime)  {

     int isprime = 1;
     double r = Math.Sqrt(i);

     for(j = 3; j <= r;  j+=2)
        if((i%j) == 0) {
           isprime = 0;
           break;
        } 


     n+=isprime; 
     i+=2;
   }
   return i;
 }

Dans votre programme vous avez fait des erreurs comme:

long c=0;
while (c >= 2) 

C est jamais supérieure à 2 si le code ne sera exécuté.

Autres conseils

Cela ressemble à des devoirs, et je ne vais pas faire vos devoirs pour vous. Mais je vais vous dire que le problème est très facile à trouver si vous simplement STEP votre programme (utilisation F10 dans Visual Studio).

Astuce: Quand est-c incrémentée

D'autres questions à vous poser:

  • quand un nombre premier se trouve (siprime), où est la valeur sont stockés?
  • combien de fois vous Boucler dans le bloc de code while (c >= 2)?
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top