Generate and print first N prime numbers
Given a number N, the task is to print the first N prime numbers.
Examples:
Input: N = 4
Output: 2, 3, 5, 7
Input: N = 1
Output: 2
Approach 1:
The problem can be solved based on the following idea:
Start iterating from i = 2, till N prime numbers are found. For each i check if it is a prime or not and update the count of primes found till now.
Follow the steps mentioned below to implement the idea:
- Create a counter variable (say X = 0) to keep count of primes found till now and an iterator (say i) to iterate through the positive integers starting from 2.
- Iterate till X becomes N:
- Check if i is a prime or not.
- If it is a prime, print i and increase the value of X, otherwise, keep X unchanged.
- Increment the value of i by 1.
Below is the implementation of the above idea:
C++
#include <bits/stdc++.h>
using namespace std;
void generatePrime( int n)
{
int X = 0, i = 2;
bool flag;
while (X < n){
flag = true ;
for ( int j = 2; j <= sqrt (i); j++){
if (i%j == 0){
flag = false ;
break ;
}
}
if (flag){
cout << i << " " ;
X++;
}
i++;
}
cout << endl;
}
int main()
{
int N = 4;
generatePrime(N);
N = 1;
generatePrime(N);
return 0;
}
|
Java
import java.io.*;
import java.lang.*;
import java.util.*;
class GFG {
static void generatePrime( int n)
{
int X = 0 , i = 2 ;
boolean flag;
while (X < n){
flag = true ;
for ( int j = 2 ; j <= ( double )Math.sqrt(i); j++){
if (i%j == 0 ){
flag = false ;
break ;
}
}
if (flag){
System.out.print( i + " " );
X++;
}
i++;
}
System.out.println();
}
public static void main(String[] args)
{
int N = 4 ;
generatePrime(N);
N = 1 ;
generatePrime(N);
}
}
|
Python3
import math
def generatePrime(n):
X = 0
i = 2
flag = False
while (X < n):
flag = True
for j in range ( 2 , math.floor(math.sqrt(i)) + 1 ):
if (i % j = = 0 ):
flag = False
break
if (flag):
print (i, end = " " )
X + = 1
i + = 1
print ()
N = 4
generatePrime(N)
N = 1
generatePrime(N)
|
C#
using System;
using System.Linq;
class GFG
{
static void GeneratePrime( int n)
{
int X = 0, i = 2;
bool flag;
while (X < n)
{
flag = true ;
for ( int j = 2; j <= Math.Sqrt(i); j++)
{
if (i % j == 0)
{
flag = false ;
break ;
}
}
if (flag)
{
Console.Write(i + " " );
X++;
}
i++;
}
Console.WriteLine();
}
static void Main()
{
int N = 4;
GeneratePrime(N);
N = 1;
GeneratePrime(N);
}
}
|
Javascript
function generatePrime( n)
{
let X = 0, i = 2;
let flag;
while (X < n){
flag = true ;
for (let j = 2; j <= Math.sqrt(i); j++){
if (i%j == 0){
flag = false ;
break ;
}
}
if (flag){
console.log(i);
X++;
}
i++;
}
console.log( "\n" );
}
let N = 4;
generatePrime(N);
N = 1;
generatePrime(N);
|
Time Complexity: O(X * log X) where X is the largest prime
Auxiliary Space: O(1)
Approach 2:
Below code also generates the first N prime numbers, but it is more efficient than the previous code because it only checks odd numbers after 2, and only checks them for divisibility by previously found prime numbers. This reduces the number of iterations required in the loop, making the code faster for large values of N.
Below is the implementation of the above algorithm:
C++
#include <bits/stdc++.h>
using namespace std;
void generateprime( int N){
vector< int > primes;
primes.push_back(2);
int num = 3;
while (primes.size() < N) {
bool is_prime
= true ;
for ( int i = 0; i < primes.size(); i++) {
if (num % primes[i]
== 0) {
is_prime = false ;
break ;
}
}
if (is_prime) {
primes.push_back(num);
}
num += 2;
}
for ( int i = 0; i < primes.size();
i++) {
cout << primes[i] << " " ;
}
cout << endl;
}
int main()
{
int n = 4;
generateprime(n);
n = 1;
generateprime(n);
return 0;
}
|
Java
import java.util.*;
public class Main {
public static void generateprime( int N) {
List<Integer> primes = new ArrayList<>();
primes.add( 2 );
int num = 3 ;
while (primes.size() < N) {
boolean is_prime = true ;
for ( int i = 0 ; i < primes.size(); i++) {
if (num % primes.get(i) == 0 ) {
is_prime = false ;
break ;
}
}
if (is_prime) {
primes.add(num);
}
num += 2 ;
}
for ( int i = 0 ; i < primes.size(); i++) {
System.out.print(primes.get(i) + " " );
}
System.out.println();
}
public static void main(String[] args) {
int n = 4 ;
generateprime(n);
n = 1 ;
generateprime(n);
}
}
|
Python3
def generateprime(N):
primes = [ 2 ]
num = 3
while len (primes) < N:
is_prime = True
for i in range ( len (primes)):
if num % primes[i] = = 0 :
is_prime = False
break
if is_prime:
primes.append(num)
num + = 2
for i in range ( len (primes)):
print (primes[i], end = " " )
print ()
n = 4
generateprime(n)
n = 1
generateprime(n)
|
C#
using System;
using System.Collections.Generic;
public class GFG {
public static void Main()
{
int n = 4;
GeneratePrime(n);
n = 1;
GeneratePrime(n);
}
public static void GeneratePrime( int n)
{
List< int > primes
= new List< int >();
primes.Add(2);
int num
= 3;
while (primes.Count < n)
{
bool isPrime
= true ;
for ( int i = 0; i < primes.Count; i++) {
if (num % primes[i]
== 0)
{
isPrime = false ;
break ;
}
}
if (isPrime)
{
primes.Add(num);
}
num += 2;
}
for ( int i = 0; i < primes.Count;
i++)
{
Console.Write(primes[i] + " " );
}
Console.WriteLine();
}
}
|
Javascript
function generateprime(N)
{
let primes = [];
primes.push(2);
let num = 3;
while (primes.length < N) {
let is_prime = true ;
for (let i = 0; i < primes.length; i++) {
if (num % primes[i] == 0) {
is_prime = false ;
break ;
}
}
if (is_prime) {
primes.push(num);
}
num += 2;
}
for (let i = 0; i < primes.length;
i++) {
console.log(primes[i] + " " );
}
console.log( "<br>" );
}
let n = 4;
generateprime(n);
n = 1;
generateprime(n);
|
Time Complexity: O(N*log(N))
Auxiliary Space: O(N)
Last Updated :
30 Mar, 2023
Like Article
Save Article
Share your thoughts in the comments
Please Login to comment...