-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathPrimzahlenCheck.cs
128 lines (117 loc) · 5.07 KB
/
PrimzahlenCheck.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
/*------------------------------------------------------------------------------
* HTBLA-Leonding / Class: 3ACIF
*------------------------------------------------------------------------------
* Jan Ritt
*------------------------------------------------------------------------------
* Description: The program reads in a Number and tells the user if the number
* is a primenumber, it shall do this with once with a while loop
* and once with a for loop.
* Further: the program shall output all primes from 1 to 10_000.
*------------------------------------------------------------------------------
*/
/* Wikipedia Recherche:
* Der einfachste Primzahltest ist die Probedivision.
* Dabei probiert man nacheinander, ob die Zahl n durch eine der Primzahlen p mit 2 ≤ p ≤ √n teilbar ist.
* Wenn nicht, dann ist n eine Primzahl.
*
* In der Praxis wird die Probedivision nur für kleine n bis etwa eine Million eingesetzt.
* Für größere n sind andere Verfahren effizienter.
*/
using System;
using System.Threading;
namespace PrimzahlenCheck
{
internal class Program
{
static void Main()
{
/* SET SCREEN */
const int consoleWidth = 58;
const int consoleHeight = 30;
Console.SetWindowSize(consoleWidth, consoleHeight);
/* VARIABLES */
string userInput; //
char userChoice; //
int primeCandidate; //
int divisor; //
bool isPrime; //
/* START PROMT */
Console.Clear();
Console.Write("\n Primzahlen Checker " +
"\n==========================================================");
Console.Write("\n Wählen Sie die Art der Berechnung: " +
"\n [w] - Berechnung mittels While-Schleife " +
"\n [f] - Berechnung mittels For-Schleife " +
"\n [a] - Prüft alle Kandidaten von 1 bis 10000 " +
"\n ");
userInput = Console.ReadLine();
char.TryParse(userInput, out userChoice);
switch (userChoice)
{
case 'w': // solution with WHILE LOOP
Console.Write("\n Geben Sie eine ganze Zahl ein, die getestet werden soll " +
"\n [0] - Abbrechen ");
do
{
/* INPUT */
userInput = Console.ReadLine();
int.TryParse(userInput, out primeCandidate);
/* CALCULATION */
isPrime = primeCandidate >= 2 ? true : false; // isPrime true if candidate >= 2
// isPrime false if candidate < 2
divisor = 2;
while (divisor <= primeCandidate / 2 && isPrime)
{
isPrime = primeCandidate % divisor != 0 ? true : false;
divisor++;
}
/* OUTPUT */
Console.Write($"\n {primeCandidate} ist {(isPrime ? "eine" : "keine")} Primzahl.");
} while (primeCandidate != 0);
break;
case 'f': // solution with FOR LOOP
Console.Write("\n Geben Sie eine ganze Zahl ein, die getestet werden soll. " +
"\n [0] - Abbrechen ");
do
{
/* INPUT */
userInput = Console.ReadLine();
int.TryParse(userInput, out primeCandidate);
/* CALCULATION */
isPrime = primeCandidate >= 2 ? true : false; // isPrime true if candidate >= 2
// isPrime false if candidate < 2
for (divisor = 2; divisor <= primeCandidate / 2 && isPrime; divisor++)
{
isPrime = primeCandidate % divisor != 0 ? true : false;
}
/* OUTPUT */
Console.Write($"\n {primeCandidate} ist {(isPrime ? "eine" : "keine")} Primzahl.");
} while (primeCandidate != 0);
break;
case 'a': // TEST ALL NUMBERS 1 to 10_000
Console.Write($"\n Alle Primzahlen bis 10000:");
for (primeCandidate = 1; primeCandidate <= 10_000; primeCandidate++)
{
/* CALCULATION */
isPrime = primeCandidate >= 2 ? true : false; // isPrime true if candidate >= 2
// isPrime false if candidate < 2
for (divisor = 2; divisor <= primeCandidate / 2 && isPrime; divisor++)
{
isPrime = primeCandidate % divisor != 0 ? true : false;
}
/* OUTPUT */
if (isPrime)
{
Console.Write($"\n {primeCandidate} ");
}
}
break;
default: break;
}
/* END PROGRAM */
Console.Write("\nZum Beenden bitte Eingabetaste drücken ...");
Console.ReadLine();
Console.Clear();
}
}
}