Exercício: listar os 1000 primeiros números primos

Fala galera da programação, tudo beleza? Números primos! Misteriosos e muito usando no mundo da computação.
Sabemos que um número primo é o número que somente é divisível por 1 e por ele mesmo. Bem o desafio de hoje é fazer um programa que liste os 1.000 primeiros números primos.
Dicas:
- Crie uma função para descobrir se um número é ou não primo;
- Utilize um laço (loop), para procurar os números;
- Opcional, pense em uma forma para facilitar a visualização.
Veja em exemplo de saída:

Exemplo em C / C++
/******************************************************************************
Criado pelo Professor Giovani Da Cruz
https://giovanidacruz.com.br
*******************************************************************************/
#include <iostream>
#include <vector>
bool isPrime(int num) {
if (num < 2) {
return false;
}
for (int i = 2; i * i <= num; ++i) {
if (num % i == 0) {
return false;
}
}
return true;
}
int main() {
std::vector<int> primeNumbers;
int currentNumber = 2;
while (primeNumbers.size() < 1000) {
if (isPrime(currentNumber)) {
primeNumbers.push_back(currentNumber);
}
++currentNumber;
}
// Exibindo os 1000 primeiros números primos
for (int i = 0; i < primeNumbers.size(); ++i) {
std::cout << primeNumbers[i] << " ";
if ((i + 1) % 10 == 0) {
// Quebrar a linha a cada 10 números para melhor visualização
std::cout << std::endl;
}
}
return 0;
}
Este programa utiliza a função isPrime para verificar se um número é primo e então armazena os primeiros 1000 números primos em um vetor chamado primeNumbers. O loop final exibe os números primos, quebrando a linha a cada 10 números para melhor visualização.
É necessário lembrar de que encontrar números primos pode ser uma tarefa demorada, especialmente para grandes quantidades. Este código é eficiente o suficiente para encontrar os primeiros 1000 primos, mas pode ser lento se você precisar de uma quantidade significativamente maior.
Exemplo em Pascal
{
Criado pelo Professor Giovani Da Cruz
https://giovanidacruz.com.br
}
program ProgramaPrimeNumbers;
const
MAX_PRIME_COUNT = 1000;
var
primeNumbers: array[1..MAX_PRIME_COUNT] of Integer;
currentNumber, count, i: Integer;
function IsPrime(num: Integer): Boolean;
var
i: Integer;
begin
if num < 2 then
IsPrime := False
else
begin
IsPrime := True;
for i := 2 to Trunc(Sqrt(num)) do
begin
if num mod i = 0 then
begin
IsPrime := False;
Break;
end;
end;
end;
end;
begin
currentNumber := 2;
count := 0;
while count < MAX_PRIME_COUNT do
begin
if IsPrime(currentNumber) then
begin
Inc(count);
primeNumbers[count] := currentNumber;
end;
Inc(currentNumber);
end;
// Exibindo os 1000 primeiros números primos
for i := 1 to MAX_PRIME_COUNT do
begin
Write(primeNumbers[i], ' ');
if (i mod 10 = 0) then
Writeln; // Quebrar a linha a cada 10 números para melhor visualização
end;
Readln;
end.
Este código em Pascal é uma adaptação direta do código em C++. Ele utiliza a função IsPrime para verificar se um número é primo e armazena os primeiros 1000 números primos em um array chamado primeNumbers. O loop final exibe os números primos, quebrando a linha a cada 10 números para melhor visualização.
Exemplo em Python
'''
Criado pelo Professor Giovani Da Cruz
https://giovanidacruz.com.br
'''
def is_prime(num):
if num < 2:
return False
for i in range(2, int(num**0.5) + 1):
if num % i == 0:
return False
return True
def generate_primes(count):
prime_numbers = []
current_number = 2
while len(prime_numbers) < count:
if is_prime(current_number):
prime_numbers.append(current_number)
current_number += 1
return prime_numbers
def main():
prime_numbers = generate_primes(1000)
# Exibindo os 1000 primeiros números primos
for i, prime in enumerate(prime_numbers, start=1):
print(prime, end=' ')
if i % 10 == 0:
# Quebrar a linha a cada 10 números para melhor visualização
print()
if __name__ == "__main__":
main()
Neste código Python, a função is_prime verifica se um número é primo, a função generate_primes gera os primeiros 1000 números primos e a função main exibe os números primos, quebrando a linha a cada 10 números para melhor visualização.
Exemplo em C#
/******************************************************************************
Criado pelo Professor Giovani Da Cruz
https://giovanidacruz.com.br
*******************************************************************************/
using System;
class Program
{
static bool IsPrime(int num)
{
if (num < 2)
{
return false;
}
for (int i = 2; i * i <= num; ++i)
{
if (num % i == 0)
{
return false;
}
}
return true;
}
static int[] GeneratePrimes(int count)
{
int[] primeNumbers = new int[count];
int currentNumber = 2;
int index = 0;
while (index < count)
{
if (IsPrime(currentNumber))
{
primeNumbers[index] = currentNumber;
++index;
}
++currentNumber;
}
return primeNumbers;
}
static void Main()
{
int[] primeNumbers = GeneratePrimes(1000);
// Exibindo os 1000 primeiros números primos
for (int i = 0; i < primeNumbers.Length; ++i)
{
Console.Write(primeNumbers[i] + " ");
if ((i + 1) % 10 == 0)
{
// Quebrar a linha a cada 10 números para melhor visualização
Console.WriteLine();
}
}
}
}
Este código em C# possui uma função IsPrime para verificar se um número é primo, uma função GeneratePrimes para gerar os primeiros 1000 números primos e o método Main para exibir os números primos, quebrando a linha a cada 10 números para melhor visualização.
Exemplo em Java
/******************************************************************************
Criado pelo Professor Giovani Da Cruz
https://giovanidacruz.com.br
*******************************************************************************/
public class PrimeNumbers {
static boolean isPrime(int num) {
if (num < 2) {
return false;
}
for (int i = 2; i * i <= num; ++i) {
if (num % i == 0) {
return false;
}
}
return true;
}
static int[] generatePrimes(int count) {
int[] primeNumbers = new int[count];
int currentNumber = 2;
int index = 0;
while (index < count) {
if (isPrime(currentNumber)) {
primeNumbers[index] = currentNumber;
++index;
}
++currentNumber;
}
return primeNumbers;
}
public static void main(String[] args) {
int[] primeNumbers = generatePrimes(1000);
// Exibindo os 1000 primeiros números primos
for (int i = 0; i < primeNumbers.length; ++i) {
System.out.print(primeNumbers[i] + " ");
if ((i + 1) % 10 == 0) {
// Quebrar a linha a cada 10 números para melhor visualização
System.out.println();
}
}
}
}
Este código em Java, assim como os exemplos acima, possui um método isPrime para verificar se um número é primo, um método generatePrimes para gerar os primeiros 1000 números primos e o método main para exibir os números primos, quebrando a linha a cada 10 números para melhor visualização.
Beleza pessoal? Espero que tenham gostado.
Dúvidas ou sugestão de outras linguagens? Deixe o seu comentário!
Um abraço e até o próximo post. Valeu!