1-goldbach/{v3.1 → v4.0}/GoldbachWorker.h RENAMED
@@ -1,67 +1,69 @@
1
  #ifndef GOLDBACHWORKER_H
2
  #define GOLDBACHWORKER_H
3
 
4
  #include <QThread>
5
 
6
  class GoldbachWorker : public QThread
7
  {
8
  Q_OBJECT
9
  Q_DISABLE_COPY(GoldbachWorker)
10
 
11
  private:
12
  long long number = 0;
 
 
13
  QVector<QString>& results;
14
  int progressPercent = 0;
15
 
16
  public:
17
- explicit GoldbachWorker(long long number, QVector<QString>& results, QObject* parent = nullptr);
18
  void run() override;
19
 
20
  signals:
21
  void sumFound(const QString& sum) const;
22
  void calculationDone(long long sumCount) const;
23
  void progressUpdated(int percent) const;
24
 
25
  private:
26
  void updateProgress(int newPercent);
27
 
28
  private:
29
  /**
30
  * @brief Calcula las sumas de Goldbach para el numero dado y las agrega a una pizarra
31
  * @param number El numero dado por el usuario
32
  * @return La cantidad de sumas encontradas
33
  */
34
  long long calculate(long long number);
35
  /**
36
  * Calcula todas las sumas de dos primos que equivalen al numero dado, y las presenta
37
  * en el area resultado. Incrementa la barra de progreso mientras realiza el calculo
38
  * de la conjetura fuerte de Goldbach, por ejemplo:
39
  *
40
  * 4 == 2 + 2
41
  * 6 == 3 + 3
42
  * 10 == 3 + 7 == 5 + 5
43
  *
44
  * @param numero Un numero entero par mayor o igual a 4
45
  * @return la cantidad de sumas de dos primos encontradas
46
  */
47
  long long calculateEvenGoldbach(long long number);
48
  /**
49
  * Calcula todas las sumas de tres primos que equivalen al numero dado, y las presenta
50
  * en el area resultado. Incrementa la barra de progreso mientras realiza el calculo
51
  * de la conjetura debil de Goldbach, por ejemplo:
52
  *
53
  * 7 == 2 + 2 + 3
54
  * 9 == 2 + 2 + 5 == 3 + 3 + 3
55
  *
56
  * @param numero Un numero entero impar mayor o igual a 7
57
  * @return la cantidad de sumas de tres primos encontradas
58
  */
59
  long long calculateOddGoldbach(long long number);
60
  /**
61
  * Retorna true si numero es primo, false si numero no es primo o menor que 2
62
  * Por definicion 1 no es primo ni compuesto, este metodo retorna false
63
  */
64
  static bool isPrime(long long numero);
65
  };
66
 
67
  #endif // GOLDBACHWORKER_H
1
  #ifndef GOLDBACHWORKER_H
2
  #define GOLDBACHWORKER_H
3
 
4
  #include <QThread>
5
 
6
  class GoldbachWorker : public QThread
7
  {
8
  Q_OBJECT
9
  Q_DISABLE_COPY(GoldbachWorker)
10
 
11
  private:
12
  long long number = 0;
13
+ int workerId = -1;
14
+ int workerCount = 0;
15
  QVector<QString>& results;
16
  int progressPercent = 0;
17
 
18
  public:
19
+ explicit GoldbachWorker(long long number, int workerId, int workerCount, QVector<QString>& results, QObject* parent = nullptr);
20
  void run() override;
21
 
22
  signals:
23
  void sumFound(const QString& sum) const;
24
  void calculationDone(long long sumCount) const;
25
  void progressUpdated(int percent) const;
26
 
27
  private:
28
  void updateProgress(int newPercent);
29
 
30
  private:
31
  /**
32
  * @brief Calcula las sumas de Goldbach para el numero dado y las agrega a una pizarra
33
  * @param number El numero dado por el usuario
34
  * @return La cantidad de sumas encontradas
35
  */
36
  long long calculate(long long number);
37
  /**
38
  * Calcula todas las sumas de dos primos que equivalen al numero dado, y las presenta
39
  * en el area resultado. Incrementa la barra de progreso mientras realiza el calculo
40
  * de la conjetura fuerte de Goldbach, por ejemplo:
41
  *
42
  * 4 == 2 + 2
43
  * 6 == 3 + 3
44
  * 10 == 3 + 7 == 5 + 5
45
  *
46
  * @param numero Un numero entero par mayor o igual a 4
47
  * @return la cantidad de sumas de dos primos encontradas
48
  */
49
  long long calculateEvenGoldbach(long long number);
50
  /**
51
  * Calcula todas las sumas de tres primos que equivalen al numero dado, y las presenta
52
  * en el area resultado. Incrementa la barra de progreso mientras realiza el calculo
53
  * de la conjetura debil de Goldbach, por ejemplo:
54
  *
55
  * 7 == 2 + 2 + 3
56
  * 9 == 2 + 2 + 5 == 3 + 3 + 3
57
  *
58
  * @param numero Un numero entero impar mayor o igual a 7
59
  * @return la cantidad de sumas de tres primos encontradas
60
  */
61
  long long calculateOddGoldbach(long long number);
62
  /**
63
  * Retorna true si numero es primo, false si numero no es primo o menor que 2
64
  * Por definicion 1 no es primo ni compuesto, este metodo retorna false
65
  */
66
  static bool isPrime(long long numero);
67
  };
68
 
69
  #endif // GOLDBACHWORKER_H