diff options
new
1 files changed, 0 insertions, 58 deletions
| -rw-r--r-- | Sem. 05/Task 1.cpp | 58 |
diff --git a/Sem. 05/Task 1.cpp b/Sem. 05/Task 1.cpp deleted file mode 100644 index 20ca708..0000000 --- a/Sem. 05/Task 1.cpp +++ /dev/null @@ -1,58 +0,0 @@ -#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 |
