1. Переименовать переменные.
Во-первых, если это домашнее задание вы получите плохие оценки (если учитель стоит его соль), потому что у вас есть бессмысленные имена переменных (да, даже numberOfPrimes
неправильно и должен быть назван requiredNumberOfPrimes
. Когда я вижу эту переменную I я спрашиваю себя: «Это сколько он хочет, или сколько он нашел?»).
Во-вторых, это поможет вам понять, где вы ошибетесь. Переменные должны быть логически названы в соответствии с тем, что они представляют. Если вы не можете объяснить, что представляют ваши переменные (например, & b), вы, вероятно, не сможете объяснить, что вы делаете с ними.
2. Посмотрите на свои петли.
for (int x = 0; x < numberOfPrimes; x++)
структура для цикла является (initialise; 'should I continue?'; 'each loop do this')
. Поэтому в вашей петле
- Продолжение следует до тех пор, пока значение x не будет равно
numberOfPrimes
*.
- Каждый раз, когда вы проходите цикл, вы добавляете от 1 до
x
.
Вы уверены, что это то, что вы хотите сделать? x
, как представляется, представляет количество простых чисел, которые вы нашли. Так почему бы не увеличить его, когда вы находите премьер, а не когда вы начинаете цикл?
for (int a = 2; a <= x ; ++a)
for (int b = 2; b < a; ++b)
Вы смотрите на каждое целом числе между 2 и x
включительно. И для каждого из этих целых чисел a
вы смотрите на каждое целое число от a
и до 2 включительно. Что вы собираетесь делать с этими целыми числами?
Каждый раз, когда вы цикл через петлю верхнего уровня (x
петли), вы собираетесь начать свой a
цикл с нуля, и каждый раз, когда вы цикл через a
цикла вы начнете b
цикл с нуля.
Так что если x
- 10, вы запускаете один раз (a = 2), затем вы запускаете снова (a = 2, a = 3), затем вы снова запускаете (a = 2, a = 3, a = 4), затем ...
3. Соберите результаты, а не записывайте их в Консоль.
var primes = new List<int>();
Это так просто. Когда вы найдете премьер, primes.Add(a);
.Затем вы знаете, сколько простых чисел вы нашли (primes.Count
), вы можете использовать список простых чисел для эффективного определения следующего простого числа, и вы можете использовать список позже, если потребуется.
В чем именно проблема, с которой вы сталкиваетесь? Вы ошибаетесь? Композитные числа? Недостаточно номеров? –
Я не думаю, что правильно обрабатываю пользовательскую часть с первым циклом. он выдает 2, затем 23, затем 235 и так далее. – Covertpyro