[牛 Kursübungen] Finden Sie die beiden nächsten Primzahlen, aus denen eine gerade Zahl besteht

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


Probeneingang

20

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;
}

Ich denke du magst

Origin blog.51cto.com/14289099/2621903
Empfohlen
Rangfolge