Почему я получаю отрицательные результаты, когда запускаю метод для печати простых коэффициентов пользовательского вводаC#

Место общения программистов C#
Ответить
Anonymous
 Почему я получаю отрицательные результаты, когда запускаю метод для печати простых коэффициентов пользовательского ввода

Сообщение Anonymous »

Итак, я пишу метод, который принимает вводимые пользователем данные и печатает все их простые множители. Это работает, за исключением того, что в конце каждого списка мне выдается отрицательное число. Что является причиной этого??

Код: Выделить всё

static void PrimeFactors(int userInput)
{
// create a variable which is a new version of userInput that can be manipulated by the method
int input = userInput;

// declare a new list which will contain all of the factors of the user input.
var factors = new List();

// While the input is greater than 1, if input mod counter is equal to 0,
// add counter to factor list and set input value to input / counter
// if input % counter != 0, break and start the for loop again

for(int counter = 1; input >= 1; )
{
if(input % counter == 0)
{
factors.Add(counter);
input = input / counter;
counter++;
}
else
{
counter++;
}

}
// display the prime factors
foreach (int factor in factors)
{
Console.Write($"{factor}  ");
}
}
Когда я ввожу 90, я получаю 1, 2, 3, 5, -3. Когда я ввожу 31, я получаю 1, 31, -1. Когда я ввожу 500, на выходе получается 1, 2, 5, 10, -5. Вы поняли.
Я знаю, что мой код не является полным с точки зрения фильтрации ТОЛЬКО простых чисел, но я хочу устранить эти отрицательные числа, прежде чем уточнять вещи, чтобы в список попадали только простые числа.

Подробнее здесь: https://stackoverflow.com/questions/778 ... factors-of
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»