Bin gerade durch meine Ausbildung neu in C# eingestiegen!
Wir hatten die Aufgabe einen vorgegebenen Pseudo-Code-Algorithmus mit Hilfe von C# zum lauffähigen Programm zu programmieren.
Nun habe ich den gesamten Code bereits in C# übersetzt und das Programm läuft auch.
Leider liegt ein Rechenfehler vor. Das Programm gibt falsche Primzahlen heraus.
Z.B. die 15, denn bei der Abfrage der Zahl 15 kann er nur auf true kommen da:
denn für die Ausgabe von p überprüft er vorher ob t*t >p ist.
Das Programm bringt in der Do-Schleife solange t=t+2 bis er bei dem wert von t=5 ist damit er false bei der OR abfrage rausbekommt. dann geht er weiter und er harpert genau bei der Ausgabe für p t*t>p sein. also lässt er 15 einfach zu.
Ich komme gerade nicht auf eine logische Lösung.bin schon ein paar Varianten durchgegangen.Daher bitte ich um neue Ideen, da mein Kopf grade platzt :D
hier der Code
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace conprimzahlen
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Geben Sie eine obere Grenze ein");
//int n = Convert.ToInt32(Console.ReadLine());
int n = int.Parse(Console.ReadLine());
if (n ≥ 2) //2 ist die kleinste Primzahl
{
Console.WriteLine("2");
int p;
int t;
p = 3;
while (p ≤ n)
{
t = 1;
do
{
t = t + 2;
}
while ((p % t == 1) | (t*t < p));
if (t * t > p)
{
Console.WriteLine(p);
}
p = p + 2;
}
}
}
}
}