Составьте программу вывода ** экран всех простых чисел, не превосходящих заданного N....

0 голосов
287 просмотров

Составьте программу вывода на экран всех простых чисел, не превосходящих заданного N. Простым называется натуральное число больше единицы, имеющее только два делителя: единицу и само это число.


Информатика (15 баллов) | 287 просмотров
Дано ответов: 2
0 голосов
Правильный ответ

Напишу ответ, потому что:
1) Все же С++ изучают реже, чем Паскаль
2) Чтобы в очередной раз показать преимущества Паскаля над С-подобными языками для школьных задач.
Как говорится, "Имеющий глаза - да увидит!"

// PascalABC.NET 3.3, сборка 1555 от 21.10.2017
// Внимание! Если программа не работает, обновите версию!

begin
  var n:=ReadInteger('N=');
  for var i:=1 to n do begin
    var (flag,j,r):=(True,2,Round(Sqrt(i)));
    while flag and (j<=r) do<br>      if i mod j = 0 then flag:=false
      else j+=1;
    if flag then Print(i)
    end
end.

Пример
N= 150
1 2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97 101 103 107 109 113 127 131 137 139 149

(150k баллов)
0 голосов

#include
#include
#include using namespace std;bool Has(const vector &primeNumbers, int value)
{
  bool has = false;
  for (int prime_number : primeNumbers)
  {
    if (value % prime_number == 0)
    {
      has = true;
    }
  }
  return has;
}vector GetPrimeNumbers(int i)
{
  vector primeNumbers= { 2, 3 };
  for (int j = 4;j < i;j++)
  {
    if (!Has(primeNumbers, j))
    {
      primeNumbers.push_back(j);
    }
  }
  return primeNumbers;
}int main()
{
  int n;
  cin >> n;
  vector prime_numbers = GetPrimeNumbers(n);
  for (int prime_number : prime_numbers)
  {
    cout << prime_number << endl;<br>  }
  cin >> n;
  return 0;
}

(612 баллов)