Другие языки программирования и технологии

C++ Помогите написать программу, которая выводит первые n простых чисел.

RD
Rakhman Duk
822
#include <iostream>
using namespace std;
bool is_prime(unsigned long);
int main() {
unsigned long a = 1, b, n = 0;
setlocale(0, "");
cout << " Введите количество: ";
cin >> b;
do {
if (is_prime(a)) {
cout << ' ' << a;
++n;
}
++a;
} while (n < b);
cout << endl;
cin.sync();
cin.get();
return 0;
}
bool is_prime(unsigned long number) {
bool prime;
if (number == 2 || number == 3 || number == 5) prime = true;
else if (number < 2 || ~number & 1 || 0 == number % 3 || 0 == number % 5) prime = false;
else {
unsigned long n;
for (n = 3; n * n <= number && number % n; n += 2);
prime = n * n > number? true : false;
}
return prime;
}
Николай Графеев
Николай Графеев
91 585
Лучший ответ
Write('Введите количество простых чисел: ');
Readln(n);
a:=3;
kol:=0;
Repeat
z:=0;
For i:=2 To a-1 Do
If (a mod i=0) then inc(z);
If (z=0) then Begin
Write(a:5);
inc(kol);
End;
inc(a);
Until kol=n;
Идея такова, что ты перебираешь натуральные числа по порядку, и проверяешь каждое, не делится ли оно на числа от 2 до округленного в меньшую сторону корня из этого числа. Если не делится ни на одно - это очередное простое число

Похожие вопросы