Print prime numbers from 1 to N in reverse order
Last Updated :
11 Oct, 2022
Given a number N, print all prime number smaller than or equal to N in reverse order .
For example, if N is 9, the output should be “7, 5, 3, 2”.
Examples:
Input : N = 5
Output : 5 3 2
Input : N = 20
Output : 19 17 13 11 7 5 3 2
A simple solution is to traverse from N to 1. For every number, check if it is a prime using school method to check for prime. Print the number if it is prime.
An efficient solution is to use Sieve of Eratosthenes. We efficiently find all number from 1 to N, then print them.
C++
#include <bits/stdc++.h>
using namespace std;
void Reverseorder( int n)
{
bool prime[n + 1];
memset (prime, true , sizeof (prime));
for ( int p = 2; p * p <= n; p++) {
if (prime[p] == true ) {
for ( int i = p * 2; i <= n; i += p)
prime[i] = false ;
}
}
for ( int p = n; p >= 2; p--)
if (prime[p])
cout << p << " " ;
}
int main()
{
int N = 25;
cout << "Prime number in reverse order" << endl;
if (N == 1)
cout << "No prime no exist in this range" ;
else
Reverseorder(N);
return 0;
}
|
Java
import java.io.*;
import java.util.*;
class GFG {
static void reverseorder( int n)
{
boolean prime[] = new boolean [n + 1 ];
for ( int i = 0 ; i < n; i++)
prime[i] = true ;
for ( int p = 2 ; p * p <= n; p++) {
if (prime[p] == true ) {
for ( int i = p * 2 ; i <= n; i += p)
prime[i] = false ;
}
}
for ( int i = n; i >= 2 ; i--)
if (prime[i] == true )
System.out.print(i + " " );
}
public static void main(String args[])
{
int N = 25 ;
System.out.println( "Prime number in reverse order" );
if (N == 1 )
System.out.println( "No prime no exist in this range" );
else
reverseorder(N);
}
}
|
Python3
def Reverseorder(n):
prime = [ True ] * (n + 1 );
p = 2 ;
while (p * p < = n):
if (prime[p] = = True ):
for i in range ((p * 2 ), (n + 1 ), p):
prime[i] = False ;
p + = 1 ;
for p in range (n, 1 , - 1 ):
if (prime[p]):
print (p, end = " " );
N = 25 ;
print ( "Prime number in reverse order" );
if (N = = 1 ):
print ( "No prime no exist in this range" );
else :
Reverseorder(N);
|
C#
using System;
class GFG {
static void reverseorder( int n)
{
bool []prime = new bool [n + 1];
for ( int i = 0; i < n; i++)
prime[i] = true ;
for ( int p = 2; p * p <= n; p++) {
if (prime[p] == true ) {
for ( int i = p * 2; i <= n;
i += p)
prime[i] = false ;
}
}
for ( int i = n; i >= 2; i--)
if (prime[i] == true )
Console.Write(i + " " );
}
public static void Main()
{
int N = 25;
Console.WriteLine( "Prime number in"
+ " reverse order" );
if (N == 1)
Console.WriteLine( "No prime no"
+ " exist in this range" );
else
reverseorder(N);
}
}
|
PHP
<?php
function Reverseorder( $n )
{
$prime = array_fill (0, $n + 1, true);
for ( $p = 2; $p * $p <= $n ; $p ++)
{
if ( $prime [ $p ] == true)
{
for ( $i = $p * 2; $i <= $n ; $i += $p )
$prime [ $i ] = false;
}
}
for ( $p = $n ; $p >= 2; $p --)
if ( $prime [ $p ])
echo $p . " " ;
}
$N = 25;
echo "Prime number in reverse order\n" ;
if ( $N == 1)
echo "No prime no exist in this range" ;
else
Reverseorder( $N );
?>
|
Javascript
<script>
function Reverseorder( n)
{
let prime = new Array(n + 1);
for (let i = 0; i < n; i++)
prime[i] = true ;
for (let p = 2; p * p <= n; p++) {
if (prime[p] == true ) {
for (let i = p * 2; i <= n; i += p)
prime[i] = false ;
}
}
for (let p = n; p >= 2; p--)
if (prime[p])
document.write(p + " " );
}
let N = 25;
document.write( "Prime number in reverse order" + "</br>" );
if (N == 1)
document.write( "No prime no exist in this range" );
else
Reverseorder(N);
</script>
|
Output:
Prime number in reverse order
23 19 17 13 11 7 5 3 2
Time Complexity: O(n*log(log(n)))
Auxiliary Space: O(n)
Share your thoughts in the comments
Please Login to comment...