diff --git a/.idea/UNI_Python2.iml b/.idea/UNI_Python2.iml
new file mode 100644
index 0000000..4c94235
--- /dev/null
+++ b/.idea/UNI_Python2.iml
@@ -0,0 +1,2 @@
+
+
\ No newline at end of file
diff --git a/.idea/modules.xml b/.idea/modules.xml
index 27d55c0..61afc86 100644
--- a/.idea/modules.xml
+++ b/.idea/modules.xml
@@ -3,6 +3,7 @@
+
\ No newline at end of file
diff --git a/.idea/workspace.xml b/.idea/workspace.xml
index 0090b45..4319917 100644
--- a/.idea/workspace.xml
+++ b/.idea/workspace.xml
@@ -3,47 +3,72 @@
+
+
+
+
+
-
+
+
-
+
+
+
+
- {
- "keyToString": {
- "RunOnceActivity.ShowReadmeOnStart": "true",
- "WebServerToolWindowFactoryState": "false",
- "git-widget-placeholder": "main",
- "last_opened_file_path": "C:/Universitaet/UNI_Python",
- "node.js.detected.package.eslint": "true",
- "node.js.detected.package.tslint": "true",
- "node.js.selected.package.eslint": "(autodetect)",
- "node.js.selected.package.tslint": "(autodetect)",
- "python.debugger.dataview.coloredbydefault": "false",
- "vue.rearranger.settings.migration": "true"
+
+}]]>
-
+
+
+
+
+
+
+
+
@@ -66,6 +91,7 @@
+
@@ -88,6 +114,7 @@
+
@@ -110,6 +137,7 @@
+
@@ -132,6 +160,7 @@
+
@@ -160,6 +189,7 @@
+
diff --git a/ha_11/loosen_janniclas_1540907_12.cpp b/ha_11/loosen_janniclas_1540907_12.cpp
new file mode 100644
index 0000000..5a3d264
--- /dev/null
+++ b/ha_11/loosen_janniclas_1540907_12.cpp
@@ -0,0 +1,66 @@
+#include
+#include
+#include
+#include
+
+// use generics for a reusable method
+template
+std::string create_overflow() {
+ number next = 2;
+ number valid = 0;
+ number iter = 0;
+
+ while(true) {
+ next = next * 2;
+ if(valid > next) {
+ std::string message = typeid(number).name();
+ message += " overflow occurred: 2**" + std::to_string(iter) + " = " + std::to_string(next);
+ message += " should be bigger as 2**" + std::to_string(iter - 1) + " != " + std::to_string(valid);
+ return message;
+ }
+ iter++; valid = next;
+ }
+}
+
+std::vector sieve_of_eratosthenes(int limit) {
+ // avoid edge cases limit=0 or limit=1
+ int length = limit + 2;
+
+ // preparation of a bool vector
+ std::vector primes(length, true);
+ primes[0] = false;
+ primes[1] = false;
+
+ // calculate sieve
+ for(int i = 2; i <= std::sqrt(limit); i++) {
+ if(primes[i]) {
+ for(int p = i * i; p <= limit; p += i) {
+ primes[p] = false;
+ }
+ }
+ }
+ return primes;
+}
+
+/*
+ * Anmerkung:
+ * Ich mag es nicht wirklich Pointer in C++ zu benutzen. Deshalb verwende ich die Klassen std::string und std::vector
+ * um zu verhindern, dass die Funktionen bool* bzw. char* pointer ausgeben müssen.
+ */
+int main() {
+ std::cout << create_overflow() << std::endl;
+ std::cout << create_overflow() << std::endl;
+ std::cout << create_overflow() << std::endl;
+
+ int limit = 100;
+ std::vector primes = sieve_of_eratosthenes(limit);
+ std::cout << "Prime numbers up to " << limit << " are: ";
+ for (int i = 0; i < limit; ++i) {
+ if (primes[i]) {
+ std::cout << i << " ";
+ }
+ }
+ std::cout << std::endl;
+
+ return 0;
+}
\ No newline at end of file
diff --git a/loosen_janniclas_1540907_12.exe b/loosen_janniclas_1540907_12.exe
new file mode 100644
index 0000000..bfc0119
Binary files /dev/null and b/loosen_janniclas_1540907_12.exe differ