Подскажите, что не так в моем коде. "К" не хочет брать на себя значение функции. Буду очень благодарен, если поможете :-)
//12. Дано натуральное число N. Составить функцию, значение которой будет
//равно количеству различных простых множителей заданного числа.
using Microsoft.VisualBasic;
using System;
namespace LR7_Paskhin
{
class Program
{
static void Main(string[] args)
{
try
{
int N; int k;
k = 0;
Console.WriteLine("Введите N");
N = int.Parse(Console.ReadLine());
int S = N;
if (N > 1)
{
Mnozhiteli(N,k);
}
Console.WriteLine("Количество множителя числа {0}:{1}", N, k);
}
catch
{
Console.WriteLine("error");
}
}
static int Mnozhiteli( int N, int k)
{ try
{
Console.WriteLine("{0}",N);
int i;
i = 1; // Множитель числа
k = 0; // Счетчик простых множителей
while (i < N )
{
Console.WriteLine(i);
if (N % i == 0)
{
++i;
}
++k;
Console.WriteLine(k);
if (i <=N)
{ break; }
}
return k;
}
catch
{
Console.WriteLine("error");
}
}
}
}
В качестве решения вашей задачи можно предложить следующий код:
private static void Main(string[] args)
{
Console.Write("Введите N: ");
int number;
if (int.TryParse(Console.ReadLine(), out number))
{
if (number > 1)
{
var count = Mnozhiteli(number);
Console.WriteLine($"Количество множителя числа {number}: {count}");
}
else
{
Console.WriteLine("N должно быть больше 1");
}
}
else
{
Console.WriteLine("Введенное значение не является числом");
}
}
private static int Mnozhiteli(int N)
{
var result = 0;
for (var i = 1; i <= N; i++)
{
if (N % i == 0 && IsSimple(i))
{
result++;
Console.WriteLine(i);
}
}
return result;
}
/// <summary>
/// Возвращает True, если число number является простым.
/// </summary>
private static bool IsSimple(int number)
{
for (var i = 2; i < number; i++)
{
if (number % i == 0)
return false;
}
return number != 1;
}
Я, кажется, знаю, что не так в Вашем коде:
while (i < N )
{
...
if (i <=N){ break; } // Зачем тут это? У вас же while и так выйдет когда надо.
}
while (i < N )
{
Console.WriteLine(i);
if (N % i == 0)
{
++i;
}
++k;
}
Вы берете остаток от деления исходного числа на i
и увеличиваете i
на 1. То есть на 4 итерации i = 4
не простому числу, а нужно найти простые множители.
k
прибавляется вне зависимости от условия прибавляется? В связке с ошибкой 2
Ваш счетчик будет считать не только все
множители, а и каждый проход цикла while.В общем, в коде есть ошибки. Я бы предложил такой алгоритм решения Вашей задачи:
N
и принимаем его в качестве граничного числа.N
на каждый элемент массива. Если остаток — ноль, то ++k
Могу добавить код, но думаю Вы и сами сможете реализовать алгоритм.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Помогите с вопросом почему консоль выводит ? где ошибка?
Я получаю порядковые номера определенных дней недели из базы данных и эти дни должны оставаться активными в DatePicker, а все остальные - нетНо...
Эластик имеет настройку indexmax-result-window по дефолту равную 10000, поэтому при запросе с offset > 10000, я получаю ошибку
Всем доброго суток, я новичок в программировании, поэтому прошу строго не судитьВопрос заключается в том, что возможно ли отправить тип данных...