C#
Программирование на C#
Программа для вывода всех простых чисел от 0 до 100. Помогите пожалуйста
using System;
namespace Answer {
class Program {
static void Main() {
var n = 100U;
for (var i = 0U; i < n; ++i) if (IsPrime(i)) Console.Write($"{i} ");
Console.WriteLine();
Console.ReadKey();
}
static bool IsPrime(uint num) {
bool prime;
if (num < 2) return false;
else if (num <= 5 && (num == 2 || num == 3 || num == 5)) prime = true;
else if (0 == num % 2 || 0 == num % 3 || 0 == num % 5) prime = false;
else {
uint n;
for (n = 3; n * n <= num && 0 != num % n; n += 2) {; }
prime = n * n > num;
}
return prime;
}
}
}
namespace Answer {
class Program {
static void Main() {
var n = 100U;
for (var i = 0U; i < n; ++i) if (IsPrime(i)) Console.Write($"{i} ");
Console.WriteLine();
Console.ReadKey();
}
static bool IsPrime(uint num) {
bool prime;
if (num < 2) return false;
else if (num <= 5 && (num == 2 || num == 3 || num == 5)) prime = true;
else if (0 == num % 2 || 0 == num % 3 || 0 == num % 5) prime = false;
else {
uint n;
for (n = 3; n * n <= num && 0 != num % n; n += 2) {; }
prime = n * n > num;
}
return prime;
}
}
}
Можно сделать тупо: проверить тупой проверкой все числа в диапазоне [0;100] на простоту. Можно пойти другим путём: проверку на простоту сделать более быстрой. А можно применить сито Эратосфена: этот метод ещё быстрее, хотя тоже не оптимальный. Сразу говорю, что простых чисел в указанном диапазоне ровно 25. Массивы здесь не нужны. Можно просто все найденные primes выдать в столбик:
Console.WriteLine(2);
for (i=3; i <= 100; i++) { k=(i+1)/2;
yes=1; for (j=2; j <= k; j++) if
(i%j==0) { yes=0; break; } if (yes)
Console.WriteLine(i); }
Остальное дописываешь и проверяешь. А потом если понадобится, то можно переходить и к более тонким методам.
Console.WriteLine(2);
for (i=3; i <= 100; i++) { k=(i+1)/2;
yes=1; for (j=2; j <= k; j++) if
(i%j==0) { yes=0; break; } if (yes)
Console.WriteLine(i); }
Остальное дописываешь и проверяешь. А потом если понадобится, то можно переходить и к более тонким методам.
Простые числа - числа, которые делятся (без остатка или с остатком = 0) только на 1 и на самого себя. Значит, если взять число и поочерёдно проверять остаток от его деления на 1, 2,...[самого себя], то в результате такого прогона количество делений без остатка должно быть равно 2.
for (int i = 2; i <= 100; i++) // числа, которые будем проверять
{
int k = 0; // количество, которое будем увеличивать, если остаток = 0
for (int j = 1; j <= i; j++) // числа, на которые будем делить - от 1 до i
{
if (i % j == 0) k += 1; // если остаток от деления = 0, то увеличить k
}
if (k == 2) Console.WriteLine(i); // если количество нулевых остатков = 2, то простое число
}
for (int i = 2; i <= 100; i++) // числа, которые будем проверять
{
int k = 0; // количество, которое будем увеличивать, если остаток = 0
for (int j = 1; j <= i; j++) // числа, на которые будем делить - от 1 до i
{
if (i % j == 0) k += 1; // если остаток от деления = 0, то увеличить k
}
if (k == 2) Console.WriteLine(i); // если количество нулевых остатков = 2, то простое число
}
Похожие вопросы
- Программирование на C Sharp (C#)
- Как выглядит сам процесс программирования на C#
- Программирование на C# - целые числа
- Программирование на C#
- Посоветуйте пожалуйста книгу, для изучения языка программирования C#, с полного нуля, заранее спасибо!
- Программирование C# . Length
- Написание программы на языке программирования C#
- Как в C# разделить одно слово на две? К примеру слово программирование разделить на програм и мирование.
- Решил попробовать изучать программирование (C# конкретно) и вот не могу понять почему код с упражнения не работает
- Как выучить язык программирования?