Website Summary Files Commits Branches @commit @diff @stats
path: root / Sem. 05 / Task 1.cpp
diff options
context:
space:
mode:
Commit7881119e0914b9207568918fcf868eea84ef3d78 (patch)
Author
 Angeld55 <angel_dimitriev@abv.bg>
2020-11-28 01:45:44 +0200
Committer
 Angeld55 <angel_dimitriev@abv.bg>
2020-11-28 01:45:44 +0200
Filesab70701506971ec44b9aab9ba00ad9525b8da0e5 /Sem. 05/Task 1.cpp
Introduction_to_programming_FMI-7881119e0914b9207568918fcf868eea84ef3d78.tar
Introduction_to_programming_FMI-7881119e0914b9207568918fcf868eea84ef3d78.tar.gz
Introduction_to_programming_FMI-7881119e0914b9207568918fcf868eea84ef3d78.zip
Parente5646c51794632f5816c00f4d1e7933ea7dcbbc0 (diff)
sem 8
1 files changed, 58 insertions, 0 deletions
-rw-r--r--Sem. 05/Task 1.cpp58
diff --git a/Sem. 05/Task 1.cpp b/Sem. 05/Task 1.cpp
new file mode 100644
index 0000000..20ca708
--- /dev/null
+++ b/Sem. 05/Task 1.cpp
@@ -0,0 +1,58 @@
+#include <iostream>
+using namespace std;
+
+int main()
+{
+ unsigned int n;
+ cin >> n;
+
+ //Решение 1:
+ bool isPrime1 = true;
+ for (int i = 2; i <= n - 1; i++)
+ {
+ if (n % i == 0)
+ isPrime1 = false;
+ }
+ cout << isPrime1 << endl;
+ // Решението работи. Но прави излишни проверки. Не е необходимо да търсим делител чак до n-1.
+ // Ако не намерим делител от корен(n), то няма да намерим и след корена.
+
+ //Решение 2:
+ bool isPrime2 = true;
+ for (int i = 2; i <= sqrt(n); i++)
+ {
+ if (n % i == 0)
+ isPrime2 = false;
+ }
+ cout << isPrime2 << endl;
+
+ // Решението пак работи. Но на всяка проверка i <= sqrt(n) пресмятаме корен(n), което е очевидно, че е излишно.
+ // Може да го сметнем веднъж и после да го ползваме.
+
+ //Решение 3:
+ bool isPrime3 = true;
+ double temp = sqrt(n);
+ for (int i = 2; i <= temp; i++)
+ {
+ if (n % i == 0)
+ isPrime3 = false;
+ }
+ cout << isPrime3 << endl;
+
+ // И това решение дава верен резултат. Но отново е възможно да прави излишни проверки.
+ // При въвеждане на числото 2000000, очевидно би било, че числото НЕ е просто, понеже се дели на 2.
+ // Но нашето решение ще продължи да търси делители, дори след като е видяло, че има такъв (в случая числото 2).
+
+ //Финално решение:
+ bool isPrime4 = true;
+ double temp2 = sqrt(n);
+ for (int i = 2; i <= temp2; i++)
+ {
+ if (n % i == 0)
+ {
+ isPrime4 = false;
+ break;
+ }
+ }
+ cout << isPrime4 << endl;
+} \ No newline at end of file