Titel Beschreibung
Jede gerade Zahl (größer als 2) kann aus zwei Primzahlen bestehen. Es gibt viele Situationen, in denen zwei Primzahlen eine gerade Zahl bilden. Diese Frage erfordert die Ausgabe eines Primzahlpaars, das eine bestimmte gerade Zahl mit der kleinsten bildet Differenz zwischen den beiden Primzahlen.
Diese Frage enthält mehrere Sätze von Beispieleingaben.
Beschreibung eingeben:
Geben Sie eine gerade Zahl ein
Ausgabebeschreibung:
Geben Sie zwei Primzahlen aus
Probeneingang20
Ausgabe
7
13
Themenanalyse
- Zuerst sollten wir bestimmen, ob eine Zahl eine Primzahl ist. Hier wird der Bereich der Primzahlen von 2 bis zur Quadratwurzel n beurteilt. Wenn es in diesem Intervall eine Zahl gibt, die durch n teilbar ist, bedeutet dies, dass n keine Primzahl ist, wenn nicht, ist n eine Primzahl.
- Finden Sie geeignete Primzahlen von 1/2 dieser geraden Zahl zu beiden Seiten, damit Sie sicherstellen können, dass der Unterschied zwischen den beiden Primzahlen am geringsten ist. Wenn Sie ihn finden, können Sie aus der Schleife springen.
Referenzcode
#include <iostream>
#include <math.h>
using namespace std;
bool isPrime(int n)
{
int sq = sqrt(n);
for(int i = 2; i <= sq; ++i)
{
if(n%i == 0)
return false;
}
return true;
}
int main()
{
int num;
while(cin >> num)
{
int half = num/2;
int i = 0;
for(i = half; i > 2; ++i)
{
if(isPrime(i) && isPrime(num-i))
break;
}
cout << num-i << endl << i << endl;
}
return 0;
}