blob: 405bcf76328787aa6a6a63c255630b361cbd80eb (
plain) (
blame)
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
|
#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;
}
|