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

Nessun commento:

Posta un commento

Perche' investire su Unix

 Un libro trovato nel libero scambio alla Coop su cio' che poteva essere e non e' stato...interessante la storia su Unix del primo c...