Найти сумму простых чисел, которые не превышают заданное число N - C#
Формулировка задачи:
Доброе время,есть такая вот задачка.
Написать функцию, которая получает на вход положительное целое число n и возвращает сумму всех простых чисел, не превышающих n.
Пример. Вход n=18. Простые числа, не превышающие 18 — это 2, 3, 5, 7, 11, 13 и 17, поэтому функция должна вернуть их сумму, равную 58.
Вот мое решение, но тут то 2 не попадает,как это исправить?
class Program
{
static void Main(string[] args)
{
int n = 0;
int b = 0;
n = int.Parse(Console.ReadLine());
if (n > 0)
{
for (int i = 2; i < n; i++)
{
Console.WriteLine("i={0}", i);
if (i % 2 != 0)
{
b += i;
Console.WriteLine("Простое число {0}", i);
}
}
Console.WriteLine("Cумма простих чисел равна {0}", b);
}
else Console.WriteLine("Не верные данные");
System.Console.ReadLine();
}
}Решение задачи: «Найти сумму простых чисел, которые не превышают заданное число N»
textual
Листинг программы
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace primeNumbers
{
class Program
{
static void Main(string[] args)
{
Console.Write("Enter any integer number: ");
int number = int.Parse(Console.ReadLine());
List<int> primeNumbers = new List<int>();
for (int i = 2; i < number; i++)
{
if (IsPrime(i))
{
primeNumbers.Add(i);
}
}
Console.WriteLine("Prime numbers: {0}", string.Join(", ", primeNumbers));
int sum = CalculateSum(primeNumbers);
Console.WriteLine("Sum is: {0}", sum);
Console.ReadLine();
}
static bool IsPrime(int number)
{
if (number < 2)
{
return false;
}
for (int i = 2; i < number; i++)
{
if (number % i == 0)
{
return false;
}
}
return true;
}
static int CalculateSum(List<int> numbers)
{
int sum = 0;
foreach (int number in numbers)
{
sum += number;
}
return sum;
}
}
}