Nombres semiprimers P70064


Statement
 

pdf   zip

En matemàtiques, un natural és semiprimer si és el producte de dos nombres primers. Els primers nombres semiprimers són 4(=2×2= 2\times2), 6(=3×2= 3\times2), 9(=3×3= 3\times3), 10(=2×5= 2\times5), 14(=2×7= 2\times7).

1.  Feu una funció

    bool primer(int n);

que indiqui si un natural nn és o no primer. En aquest apartat, no podeu utilitzar bucles, per tant, serà bo que definiu una funció auxiliar amb algun paràmetre addicional.

2.  Utilitzeu la funció anterior per implementar una acció

    void semiprimer(int n, bool& b, int& p, int& q);

que, donat un natural nn, desa en bb si nn és o no semiprimer. A més, quan bb és cert, desa en pp i qq dos nombres primers tals que pq=npq=n i pqp \le q.

3.  Feu un programa que llegeixi una seqüència de naturals i que, per a cadascun, digui si és o no semiprimer i, en cas afirmatiu, escrigui la seva descomposició obtinguda per l’acció @semiprimer()@. Seguiu el format dels exemples.

Observació

Com sempre en informàtica, els nombres naturals inclouen el zero.

Public test cases
  • Input

    0
    1
    2
    4
    6
    17
    18
    30
    49
    323
    100000001
    999999991
    

    Output

    0: no
    1: no
    2: no
    4: yes (2,2)
    6: yes (2,3)
    17: no
    18: no
    30: no
    49: yes (7,7)
    323: yes (17,19)
    100000001: yes (17,5882353)
    999999991: yes (67,14925373)
    
  • Information
    Author
    Jordi Petit
    Language
    Catalan
    Official solutions
    C++
    User solutions
    C++