按反序打印从 1 到 N 的质数
原文:https://www . geesforgeks . org/print-prime-numbers-1-n-逆序/
给定一个数 N,以相反的顺序打印所有小于或等于 N 的素数。 比如 N 是 9,输出应该是“7、5、3、2”。 例:
Input : N = 5
Output : 5 3 2
Input : N = 20
Output : 19 17 13 11 7 5 3 2
一个简单的解决方案是从 N 遍历到 1。每一个数字,用学法检查是否是素数。如果数字是质数,打印出来。 一个有效的解决方案是使用厄拉多塞的筛子。我们高效地找到从 1 到 N 的所有数字,然后打印出来。
C++
// C++ program to print all primes between 1
// to N in reverse order using Sieve of
// Eratosthenes
#include <bits/stdc++.h>
using namespace std;
void Reverseorder(int n)
{
// Create a boolean array "prime[0..n]" and
// initialize all entries it as true. A value
// in prime[i] will finally be false if i
// is Not a prime, else true.
bool prime[n + 1];
memset(prime, true, sizeof(prime));
for (int p = 2; p * p <= n; p++) {
// If prime[p] is not changed, then
// it is a prime
if (prime[p] == true) {
// Update all multiples of p
for (int i = p * 2; i <= n; i += p)
prime[i] = false;
}
}
// Print all prime numbers in reverse order
for (int p = n; p >= 2; p--)
if (prime[p])
cout << p << " ";
}
// Driver Program
int main()
{
// static input
int N = 25;
// to display
cout << "Prime number in reverse order" << endl;
if (N == 1)
cout << "No prime no exist in this range";
else
Reverseorder(N); // calling the function
return 0;
}
Java 语言(一种计算机语言,尤用于创建网站)
// Java program to print all primes between 1
// to N in reverse order using Sieve of
// Eratosthenes
import java.io.*;
import java.util.*;
class GFG {
static void reverseorder(int n)
{
// Create a boolean array "prime[0..n]" and
// initialize all entries it as true. A value
// in prime[i] will finally be false if i
// is Not a prime, else true.
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] is not changed, then
// it is a prime
if (prime[p] == true) {
// Update all multiples of p
for (int i = p * 2; i <= n; i += p)
prime[i] = false;
}
}
// Print all prime numbers
for (int i = n; i >= 2; i--)
if (prime[i] == true)
System.out.print(i + " ");
}
// Driver Program to test above function
public static void main(String args[])
{
// static input
int N = 25;
// To display
System.out.println("Prime number in reverse order");
if (N == 1)
System.out.println("No prime no exist in this range");
else
reverseorder(N); // calling the function
}
}
Python 3
# Python3 program to print all primes
# between 1 to N in reverse order
# using Sieve of Eratosthenes
def Reverseorder(n):
# Create a boolean array "prime[0..n]"
# and initialize all entries it as true.
# A value in prime[i] will finally be
# false if i is Not a prime, else true.
prime = [True] * (n + 1);
p = 2;
while(p * p <= n):
# If prime[p] is not changed,
# then it is a prime
if (prime[p] == True):
# Update all multiples of p
for i in range((p * 2), (n + 1), p):
prime[i] = False;
p += 1;
# Print all prime numbers in
# reverse order
for p in range(n, 1, -1):
if (prime[p]):
print(p, end = " ");
# Driver Code
# static input
N = 25;
# to display
print("Prime number in reverse order");
if (N == 1):
print("No prime no exist in this range");
else:
Reverseorder(N); # calling the function
# This code is contributed by mits
C
// C# program to print all primes between 1
// to N in reverse order using Sieve of
// Eratosthenes
using System;
class GFG {
static void reverseorder(int n)
{
// Create a boolean array "prime[0..n]"
// and initialize all entries it as
// true. A value in prime[i] will
// finally be false if i is Not a
// prime, else true.
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] is not changed,
// then it is a prime
if (prime[p] == true) {
// Update all multiples of p
for (int i = p * 2; i <= n;
i += p)
prime[i] = false;
}
}
// Print all prime numbers
for (int i = n; i >= 2; i--)
if (prime[i] == true)
Console.Write(i + " ");
}
// Driver code
public static void Main()
{
// static input
int N = 25;
// To display
Console.WriteLine("Prime number in"
+ " reverse order");
if (N == 1)
Console.WriteLine("No prime no"
+ " exist in this range");
else
// calling the function
reverseorder(N);
}
}
// This code is contributed by Sam007.
服务器端编程语言(Professional Hypertext Preprocessor 的缩写)
<?php
// PHP program to print all primes
// between 1 to N in reverse order
// using Sieve of Eratosthenes
function Reverseorder($n)
{
// Create a boolean array "prime[0..n]"
// and initialize all entries it as true.
// A value in prime[i] will finally be
// false if i is Not a prime, else true.
$prime = array_fill(0, $n + 1, true);
for ($p = 2; $p * $p <= $n; $p++)
{
// If prime[p] is not changed,
// then it is a prime
if ($prime[$p] == true)
{
// Update all multiples of p
for ($i = $p * 2; $i <= $n; $i += $p)
$prime[$i] = false;
}
}
// Print all prime numbers in
// reverse order
for ($p = $n; $p >= 2; $p--)
if ($prime[$p])
echo $p." ";
}
// Driver Code
// static input
$N = 25;
// to display
echo "Prime number in reverse order\n";
if ($N == 1)
echo "No prime no exist in this range";
else
Reverseorder($N); // calling the function
// This code is contributed by mits
?>
java 描述语言
<script>
// Javascript program to print all primes between 1
// to N in reverse order using Sieve of
// Eratosthenes
function Reverseorder( n)
{
// Create a boolean array "prime[0..n]" and
// initialize all entries it as true. A value
// in prime[i] will finally be false if i
// is Not a prime, else true.
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] is not changed, then
// it is a prime
if (prime[p] == true) {
// Update all multiples of p
for (let i = p * 2; i <= n; i += p)
prime[i] = false;
}
}
// Print all prime numbers in reverse order
for (let p = n; p >= 2; p--)
if (prime[p])
document.write(p + " ");
}
// Driver Code
// static input
let N = 25;
// to display
document.write("Prime number in reverse order" + "</br>");
if (N == 1)
document.write("No prime no exist in this range");
else
Reverseorder(N); // calling the function
</script>
Output:
Prime number in reverse order
23 19 17 13 11 7 5 3 2
版权属于:月萌API www.moonapi.com,转载请注明出处