Sexy Primzahl
In der Mathematik sind Sexy Primes Primzahlen, die sich um sechs voneinander unterscheiden. Zum Beispiel sind die Zahlen 5 und 11 beide sexy Primzahlen, weil sie sich um 6 unterscheiden. Wenn p + 2 oder p + 4 (wobei p die untere Primzahl ist) ebenfalls eine Primzahl ist.
Sie können wie folgt gruppiert werden:
- Sexy Primzahlenpaare: Es hat die Form (p, p + 6), wobei p und p + 6 Primzahlen sind.
Z.B. (11, 17) ist ein sexy Primzahlpaar.
- Sexy Primzahl-Tripletts: Primzahl-Tripletts (p, p + 6, p + 12), bei denen p + 18 zusammengesetzt ist, werden als sexy Primzahl-Tripletts bezeichnet.
Z.B. (7, 13, 19) ist ein sexy Prime Drilling.
- Sexy Primzahlvierlinge: Sexy Primzahlvierlinge (p, p + 6, p + 12, p + 18) können nur mit Primzahlen beginnen, die in ihrer dezimalen Darstellung auf eine 1 enden (außer dem Vierling mit p = 5).
Z.B. (41, 47, 53, 59) ist ein sexy Prime-Vierer.
- Sexy Primzahl-Fünflinge: Bei einer arithmetischen Folge von fünf Gliedern mit gemeinsamer Differenz 6 muss eines der Glieder durch 5 teilbar sein, da die beiden Zahlen teilerfremd sind. Somit ist das einzige reizvolle Primzahlquintolle (5, 11, 17, 23, 29); keine Folge von sexy Primzahlen mehr möglich.
Gegeben sei ein Bereich der Form [L, R] . Die Aufgabe besteht darin, alle sexy Prime-Paare im Sortiment zu drucken.
Beispiele:
Input : L = 6, R = 59 Output : (7, 13) (11, 17) (13, 19) (17, 23) (23, 29) (31, 37) (37, 43) (41, 47) (47, 53) (53, 59) Input : L = 1, R = 19 Output : (5, 11) (7, 13) (11, 17) (13, 19)
Sexy Prime innerhalb einer Reichweite [L, R] kann mit Sieve Of Eratosthenes generiert werden . Die Idee ist, ein boolsches Array von Sieve zu generieren und eine i-Schleife von L bis R – 6 (einschließlich) auszuführen und zu prüfen, ob i und i + 6 Primzahlen sind oder nicht. Wenn beide Primzahlen sind, geben Sie beide Zahlen aus.
Unten ist die Implementierung dieses Ansatzes:
C++
// CPP Program to print sexy prime in a range. #include <bits/stdc++.h> using namespace std; // Print the sexy prime in a range void sexyprime(int l, int r) { // Sieve Of Eratosthenes for generating // prime number. bool prime[r + 1]; memset(prime, true, sizeof(prime)); for (int p = 2; p * p <= r; 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 <= r; i += p) prime[i] = false; } } // From L to R - 6, checking if i, // i + 6 are prime or not. for (int i = l; i <= r - 6; i++) if (prime[i] && prime[i + 6]) cout << "(" << i << ", " << i + 6 << ") "; } // Driven Program int main() { int L = 6, R = 59; sexyprime(L, R); return 0; }
Java
// Java code to print sexy prime in a range. import java.util.Arrays; import java.util.Collections; class GFG { // Print the sexy prime in a range public static void sexyprime(int l, int r) { // Sieve Of Eratosthenes for generating // prime number. boolean [] prime= new boolean[r + 1]; // memset(prime, true, sizeof(prime)); Arrays.fill(prime, true); for (int p = 2; p * p <= r; 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 <= r; i += p) prime[i] = false; } } // From L to R - 6, checking if i, // i + 6 are prime or not. for (int i = l; i <= r - 6; i++) if (prime[i] && prime[i + 6]) System.out.print( "(" + i + ", " + (i + 6) + ") "); } // Driver program to test above methods public static void main(String[] args) { int L = 6, R = 59; sexyprime(L, R); } } // This code is contributed by Chhavi
Python 3
# Python 3 Program to print # sexy prime in a range. # Print the sexy prime in a range def sexyprime(l, r) : # Sieve Of Eratosthenes # for generating # prime number. prime=[True] * (r + 1) p = 2 while(p * p <= r) : # 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, r+1 ,p) : prime[i] = False p = p + 1 # From L to R - 6, checking if i, # i + 6 are prime or not. for i in range( l,r - 6 + 1) : if (prime[i] and prime[i + 6]) : print("(", i , ",", i + 6,")", end="") # Driven Program L = 6 R = 59 sexyprime(L, R) # This code is contributed by Nikita Tiwari.
C#
// C# code to print sexy // prime in a range. using System; class GFG { // Print the sexy // prime in a range public static void sexyprime(int l, int r) { // Sieve Of Eratosthenes // for generating prime number. int[] prime = new int[r + 1]; // memset(prime, true, // sizeof(prime)); for (int i = 0; i < r + 1; i++) prime[i] = 1; for (int p = 2; p * p <= r; p++) { // If prime[p] is not changed, // then it is a prime if (prime[p] == 1) { // Update all multiples of p for (int i = p * 2; i <= r; i += p) prime[i] = 0; } } // From L to R - 6, checking // if i, i + 6 are prime or not. for (int i = l; i <= r - 6; i++) if (prime[i] == 1 && prime[i + 6] == 1) Console.Write("(" + i + ", " + (i + 6) + ") "); } // Driver Code public static void Main() { int L = 6, R = 59; sexyprime(L, R); } } // This code is contributed by mits
PHP
<?php // PHP Program to print // sexy prime in a range. // Print the sexy // prime in a range function sexyprime($l, $r) { // Sieve Of Eratosthenes for // generating prime number. $prime = array_fill(0, $r + 1, true); for ($p = 2; $p * $p <= $r; $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 <= $r; $i += $p) $prime[$i] = false; } } // From L to R - 6, // checking if i, // i + 6 are prime or not. for ($i = $l; $i <= $r - 6; $i++) if ($prime[$i] && $prime[$i + 6]) echo "(" , $i , ", ", $i + 6 , ") "; } // Driver Code $L = 6; $R = 59; sexyprime($L, $R); // This code is contributed // by ajit. ?>
Javascript
<script> // Javascript Program to print sexy prime in a range. // Print the sexy prime in a range function sexyprime(l, r) { // Sieve Of Eratosthenes for generating // prime number. var prime = Array(r+1).fill(true); for (var p = 2; p * p <= r; p++) { // If prime[p] is not changed, // then it is a prime if (prime[p] == true) { // Update all multiples of p for (var i = p * 2; i <= r; i += p) prime[i] = false; } } // From L to R - 6, checking if i, // i + 6 are prime or not. for (var i = l; i <= r - 6; i++) if (prime[i] && prime[i + 6]) document.write( "(" + i + ", " + (i + 6) + ") "); } // Driven Program var L = 6, R = 59; sexyprime(L, R); </script>
Ausgabe:
(7, 13) (11, 17) (13, 19) (17, 23) (23, 29) (31, 37) (37, 43) (41, 47) (47, 53) (53, 59)