Heim > Backend-Entwicklung > C++ > Warum findet mein Programm in einer langen Variablen keine Primzahlen und wie kann ich das Problem beheben?

Warum findet mein Programm in einer langen Variablen keine Primzahlen und wie kann ich das Problem beheben?

Mary-Kate Olsen
Freigeben: 2025-01-13 22:01:46
Original
910 Leute haben es durchsucht

Why is my program failing to find prime numbers within a long variable, and how can I fix it?

Fehlerbehebung bei der Identifizierung von Primzahlen in langen Variablen

Ein Benutzer hat Probleme bei der Ausgabe gemeldet, als er versuchte, Primzahlen innerhalb einer langen Variablen zu identifizieren. Das ursprüngliche Programm enthielt einen Fehler, der korrekte Ergebnisse verhinderte.

Problemanalyse

Der primäre Fehler war auf eine falsche Initialisierung der Schleifenvariablen zurückzuführen. Die Bedingung der äußeren Schleife (i <= num) war ineffizient und führte wahrscheinlich dazu, dass das Programm auf unbestimmte Zeit ausgeführt wurde oder falsche Ergebnisse lieferte.

Erweiterter Code

Unten finden Sie ein überarbeitetes Programm, das diese Probleme behebt und effizient Primzahlen innerhalb eines bestimmten Bereichs findet:

<code class="language-csharp">using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace PrimeNumberFinder
{
    class Program
    {
        static void FindPrimes(long num)
        {
            bool isPrime;
            for (long i = 2; i <= num; i++)
            {
                isPrime = true;
                for (long j = 2; j * j <= i; j++)
                {
                    if (i % j == 0)
                    {
                        isPrime = false;
                        break;
                    }
                }
                if (isPrime)
                {
                    Console.WriteLine(i);
                }
            }
        }

        static void Main(string[] args)
        {
            Console.WriteLine("Enter a number:");
            long inputNum;
            if (long.TryParse(Console.ReadLine(), out inputNum))
            {
                FindPrimes(inputNum);
            }
            else
            {
                Console.WriteLine("Invalid input. Please enter a valid long integer.");
            }
        }
    }
}</code>
Nach dem Login kopieren

Leistungsverbesserungen

Dieser verbesserte Code bietet eine bessere Leistung und nähert sich der zeitlichen Komplexität von O(n log log n) an, sodass er für größere Zahlenbereiche geeignet ist. Die innere Schleifenbedingung (j * j <= i) ist eine Schlüsseloptimierung.

Das obige ist der detaillierte Inhalt vonWarum findet mein Programm in einer langen Variablen keine Primzahlen und wie kann ich das Problem beheben?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage