MSzopa

Matura Czerwiec 2019 Zad 4

Jan 20th, 2023
1,174
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.09 KB | None | 0 0
  1. #include <iostream>
  2. #include <fstream>
  3. #include <cmath>
  4. using namespace std;
  5.  
  6. bool CzyPierwsza(int liczba) {
  7.     if (liczba < 2)
  8.         return false;
  9.     if (liczba == 2)
  10.         return true;
  11.     for (int i = 2; i * i <= liczba; i++) {
  12.         if (liczba % i == 0)
  13.             return false;
  14.     }
  15.     return true;
  16. }
  17. int Odwroc(int liczba) {
  18.     int ret = 0;
  19.     //ile liczba ma cyfr
  20.     int i = log10(liczba);
  21.     while (liczba > 0) {
  22.         int cyfra = liczba % 10;
  23.         liczba /= 10;
  24.         // ostatnia cyfra z cyfr
  25.         ret += cyfra * pow(10, i--);
  26.     }
  27.     return ret;
  28. }
  29. bool P1(int liczba) {
  30.     return liczba <= 5000 && liczba >= 100 && CzyPierwsza(liczba);
  31. }
  32. bool P2(int liczba) {
  33.     return CzyPierwsza(Odwroc(liczba));
  34. }
  35. int SumaCyfr(int liczba) {
  36.     int ret = 0;
  37.     while (liczba > 0) {
  38.         ret += liczba % 10;
  39.         liczba /= 10;
  40.     }
  41.     return ret;
  42. }
  43. int N(int liczba) {
  44.     do {
  45.         liczba = SumaCyfr(liczba);
  46.     } while (liczba >= 10);
  47.     return liczba;
  48. }
  49. bool P3(int liczba) {
  50.     return N(liczba) == 1;
  51. }
  52. int main()
  53. {
  54.  
  55.     cout << N(31699);
  56.     const int liczbyC = 300;
  57.     const int pierwszeC = 200;
  58.     //const int liczbyC = 50;
  59.     //const int pierwszeC = 50;
  60.  
  61.     ofstream p1;
  62.     p1.open("wyniki4_1.txt");
  63.     p1 << "4.1" << endl;
  64.  
  65.     ofstream p2;
  66.     p2.open("wyniki4_2.txt");
  67.     p2 << "4.2" << endl;
  68.     ofstream p3;
  69.     p3.open("wyniki4_3.txt");
  70.     p3 << "4.3" << endl;
  71.  
  72.     ifstream liczby;
  73.     liczby.open("liczby.txt");
  74.     for (int i = 0; i < liczbyC; i++) {
  75.         int liczba;
  76.         liczby >> liczba;
  77.         if (P1(liczba)) {
  78.             p1 << liczba << endl;
  79.         }
  80.     }
  81.     ifstream pierwsze;
  82.     pierwsze.open("pierwsze.txt");
  83.     int c_3 = 0;
  84.     for (int i = 0; i < pierwszeC; i++) {
  85.         int liczba;
  86.         pierwsze >> liczba;
  87.         if (P2(liczba)) {
  88.             p2 << liczba << endl;
  89.         }
  90.         if (P3(liczba))
  91.             c_3++;
  92.     }
  93.     p3 << c_3 << endl;
  94.  
  95.     p1.flush();
  96.     p1.close();
  97.     p2.flush();
  98.     p2.close();
  99.     p3.flush();
  100.     p3.close();
  101. }
Advertisement
Add Comment
Please, Sign In to add comment