Website Summary Files Commits Branches @commit @diff @stats
path: root / pract_SI / Pract. 04 / Solutions / task14.cpp
diff options
context:
space:
mode:
Commit0b73292819cd7b8bb9460ee817304f6d3295204b (patch)
Author
 Justsvetoslavov <justsvetoslavov@gmail.com>
2021-11-11 18:27:51 +0200
Committer
 Justsvetoslavov <justsvetoslavov@gmail.com>
2021-11-11 18:27:51 +0200
Files77194213599f45abc58ea327405d775c99863567 /pract_SI/Pract. 04/Solutions/task14.cpp
Introduction_to_programming_FMI-0b73292819cd7b8bb9460ee817304f6d3295204b.tar
Introduction_to_programming_FMI-0b73292819cd7b8bb9460ee817304f6d3295204b.tar.gz
Introduction_to_programming_FMI-0b73292819cd7b8bb9460ee817304f6d3295204b.zip
Parent9a80de3c4d90f4af7bb5d56ac1d88032d0c56ff3 (diff)
Added Prime Solutions
1 files changed, 96 insertions, 0 deletions
-rw-r--r--pract_SI/Pract. 04/Solutions/task14.cpp96
diff --git a/pract_SI/Pract. 04/Solutions/task14.cpp b/pract_SI/Pract. 04/Solutions/task14.cpp
new file mode 100644
index 0000000..c95c36c
--- /dev/null
+++ b/pract_SI/Pract. 04/Solutions/task14.cpp
@@ -0,0 +1,96 @@
+#include <iostream>
+#include <cmath>
+
+using namespace std;
+
+//Function to check whether a number is prime
+bool isPrime(int number)
+{
+ int size = sqrt(number);
+
+
+ for (int i = 2; i <= size; i++)
+ {
+ if (number % i == 0)
+ return false;
+ }
+
+ return true;
+}
+
+//Print all prime numbers that are smaller than N
+void printAllPrimeToNumber(int number) //Interval [1 ; N]
+{
+ std::cout << "1" << ", 2";
+
+ for (int i = 3; i <= number; i += 2)
+ {
+ if (isPrime(i))
+ std::cout << ", " << i;
+ }
+
+ std::cout << "." << std::endl;
+}
+
+//PrimeFactorization
+void PrimeFactor(int number)
+{
+ for (int i = 2; i <= number; i++)
+ {
+ if (isPrime(i) && number % i == 0)
+ {
+ if (i == number) //last step, no space
+ std::cout << i;
+ else
+ std::cout << i << " ";
+
+ number /= i;
+ i--;
+ }
+ }
+ std::cout << std::endl;
+}
+
+//Function whether the number N can be expressed as a sum of two prime numbers
+bool checkSumOfTwoPrimes(int number,int &primeOfNumber)
+{
+ int size = number / 2; //36 = 7 + 29, 16 = 3 + 13 , 36 = 5 + 31
+ for (int i = 2;i <= size; i++)
+ {
+ //16 = 3 + x , x = 16 - 3 , x = 13 PRIME
+ if (isPrime(i) && isPrime(number - i))
+ {
+ primeOfNumber = i;
+ return true;
+ }
+ }
+ return false;
+}
+
+int main()
+{
+ int number;
+ std::cin >> number;
+
+ if (isPrime(number))
+ std::cout << number << " is prime!" << std::endl;
+ else
+ std::cout << number << " is composite number!" << std::endl;
+
+ std::cout << std::endl << "Prime numbers up to " << number << " are: ";
+ printAllPrimeToNumber(number);
+
+ std::cout << "Factoring of: " << number << " is: ";
+ PrimeFactor(number);
+
+ int primeOfNumber;
+ if (checkSumOfTwoPrimes(number, primeOfNumber))
+ std::cout << primeOfNumber << " + " << number - primeOfNumber << std::endl;
+ else
+ std::cout << "Error!" << std::endl;
+
+
+
+
+ return 0;
+}