Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <string>
- bool isPrimal(int number);
- bool isDigitsSumPrimal(int number);
- bool isSuperPrimal(int number);
- bool isSuperBPrimal(int number);
- std::string decToBin(int number);
- int zadanieA(int begin, int end);
- int zadanieB1();
- bool zadanieB2();
- void main()
- {
- std::cout << "<2, 1000>: " << zadanieA(2, 1000) << std::endl;
- std::cout << "<100, 10000>: " << zadanieA(100, 10000) << std::endl;
- std::cout << "<1000, 100000>: " << zadanieA(1000, 100000) << std::endl;
- std::cout << zadanieB1() << std::endl;
- std::cout << zadanieB2() << std::endl;
- //for (int i = 0; i < 200; ++i)
- //{
- // std::cout << i << ": " << isPrimal(i) << std::endl;
- //}
- std::cin.get();
- }
- bool isPrimal(int number)
- {
- if (number <= 2) return false;
- for (int i = 2; i < number; ++i)
- {
- if (number % 2 == 0) return false;
- if (number % i == 0) return false;
- }
- return true;
- }
- bool isDigitsSumPrimal(int number)
- {
- auto string_number = std::to_string(number);
- int sum = 0;
- for (int i = 0; i < string_number.size(); ++i)
- {
- std::string one_digit = "";
- one_digit += string_number[i];
- sum += std::stoi(one_digit);
- }
- //std::cout << number << ": " << string_number << " - " << sum << " : " << isPrimal(sum) << std::endl;
- return isPrimal(sum);
- }
- bool isSuperPrimal(int number)
- {
- return (isPrimal(number) && isDigitsSumPrimal(number));
- }
- bool isSuperBPrimal(int number)
- {
- if (!isPrimal(number)) return false;
- std::string binary = decToBin(number);
- int sum = 0;
- for (int i = 0; i < binary.size(); ++i)
- {
- if (binary[i] == '1') {
- ++sum;
- }
- }
- return isPrimal(sum);
- }
- std::string decToBin(int number)
- {
- std::string binary = "";
- while (number > 0)
- {
- if (number % 2 == 0) binary += "0";
- else binary += "1";
- number /= 2;
- }
- std::string reversed_binary = "";
- for (int i = binary.size() - 1; i >= 0; --i)
- {
- reversed_binary += binary[i];
- }
- return reversed_binary;
- }
- int zadanieA(int begin, int end)
- {
- auto sum = 0;
- for (int i = begin; i <= end; ++i)
- {
- if (isSuperPrimal(i) && isSuperBPrimal(i))
- {
- ++sum;
- }
- }
- return sum;
- }
- int zadanieB1()
- {
- auto sum = 0;
- for (int i = 100; i <= 10000; ++i)
- {
- if (isDigitsSumPrimal(i)) ++sum;
- }
- return sum;
- }
- bool zadanieB2()
- {
- auto sum = 0;
- for (int i = 100; i < 10000; ++i)
- {
- if (isSuperBPrimal(i))
- {
- sum += i;
- }
- }
- return isPrimal(sum);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement