P0003. Nombres amics P55307


Statement
 

pdf   zip

html

Un parell de nombres es diuen amics si són diferents i la suma de tots els divisors positius de cada nombre (incloent 1 però excloent el propi nombre) és igual a l’altre nombre.

Per exemple, 2620 i 2924 són amics: els divisors de 2620 (a part de 2620) són 1, 2, 4, 5, 10, 20, 131, 262, 524, 655 i 1310, els quals sumen 2924. Els divisors de 2924 (apart de 2924) són 1, 2, 4, 17, 34, 43, 68, 86, 172, 731 i 1462, els quals sumen 2620.

Feu un programa que llegeixi una seqüència de parells de naturals més grans o iguals que 2, i escrigui aquells parells que són amics.

El vostre programa ha d’incloure dues funcions:

int suma_divisors(int a);

que retorna la suma dels divisors positius del natural |a| ≥ 2 que són estrictament més petits que |a|, i

bool son_amics(int a, int b);

que indica si dos naturals |a| ≥ 2 i |b| ≥ 2 són amics.

Entrada

L’entrada és una seqüència a1, b1, a2, b2, …, an, bn de n parells de naturals més grans o iguals que 2, amb n ≥ 0.

Sortida

Cal escriure una sola línia, la qual contingui cada parell de nombres ai bi que siguin amics (incloent repeticions si és necessari). Els parells s’han d’escriure separats per comes i entre parèntesis, seguint el format dels exemples.

Public test cases
  • Input

    1345 6721  2924 2620  15 2  220 284  220 284   
    

    Output

    (2924 2620),(220 284),(220 284)
    
  • Input

    
            
                                

    Output

    
            
                                
  • Input

    8 8  1184 1210  6666 9999  6 6
    

    Output

    (1184 1210)
    
  • Information
    Author
    Professorat de P1
    Language
    Catalan
    Other languages
    English
    Official solutions
    C++
    User solutions
    C++