martedì 21 maggio 2013

Problema di Eulero 3




Il terzo problema del Progetto Eulero e' cosi' formulato
---------------------------------------------

The prime factors of 13195 are 5, 7, 13 and 29.
What is the largest prime factor of the number 600851475143 ?
--------------------------------------------------------


Il codice che ho impiegato e' il seguente.
Cosa ho imparato: il programma veniva compilato ed eseguito correttamente (ma con risultati errati) anche sbagliando la definizione della variabile numero; infatti se si definisce long e non long long il programma funziona ma riporta risultati errati...leggere sempre prima il manuale di un linguaggio di programmazione che si conosce poco.
Un paio di trucchi
1) vengono presi in considerazione solo divisori non pari (per ovvi motivi)
2) il ciclo si interrompe a 775147 che e' circa la radice quadrata di 600851475143

------------------------------------------------------------------

#include <iostream>

using namespace std;

int main()
{
long long numero = 600851475143;

for (int t=3;t<775147;t+=2)
{
    if (numero%t == 0)
        {
            numero = numero/t;
            cout << t << endl;
        }
}
    return 0;
}

------------------------------------------------------------------
La soluzione e' 6857