/* * Scrivere un programma che legge in ingresso un numero intero e * verifica se può essere ottenuto come somma di * quadrati. Implementare la verifica definendo ed utilizzando in * prima battuta una funzione che prenda in ingresso due numeri interi * n ed i e, se esiste un numero intero non negativo j tale che n == * i*i + j*j, ritorna tale numero, altrimenti ritorna -1. * * * Commento: Utilizzando la precedente funzione, la ricerca può essere * effettuata per tentativi successivi, ossia provando per i = 1, 2, * ... In questo caso, si può notare che non è necessario che in * ciascuno di tali tentativi la funzione in questione prenda in * considerazione valori j < i, ma basta che considerari solo j >= i. * * Suggerimento: sfruttando il precedente commento, si può * implementare l'algoritmo in modo più efficiente definendo ed * utilizzando, al posto della precedente funzione, una funzione * simile, che, se esiste un numero intero non negativo j >= abs(i) * tale che n == i*i + j*j, ritorna tale numero, altrimenti ritorna * -1. Se ci si riesce, definire ed utilizzare quest'ultima funzione * al posto di quella generale. */