Permalänk

Project Euler.

Hej, Håller på med project Euler problemen.

Det är just sådana jag har fått, reda på första! =/

Övningen
If we list all the natural numbers below 10 that are multiples of 3 or 5, we get 3, 5, 6 and 9. The sum of these multiples is 23.

Find the sum of all the multiples of 3 or 5 below 1000.

Min kod :

#include <iostream> using namespace std; int main() { long summa; int tal1, tal2, i = 0; while(true) { i++; tal1 = i * 3; tal2 = i * 5; if(tal1 > 1000) { return false; } summa += tal1; if(tal2 <= 995) { summa +=tal2; } else{tal2 = 995;} cout << "Tal1 = " << tal1 << " Tal2 = " << tal2 << " Summa = " << summa << endl; } cout << "Totalsumma = " << summa; cin.get(); cin.get(); return 0; }

Mitt svar = 266333

Har även påbörjat med problem 2.

Övning :
Each new term in the Fibonacci sequence is generated by adding the previous two terms. By starting with 1 and 2, the first 10 terms will be:

1, 2, 3, 5, 8, 13, 21, 34, 55, 89, ...

By considering the terms in the Fibonacci sequence whose values do not exceed four million, find the sum of the even-valued terms.

min kod:

#include <iostream> using namespace std; int main() { long tal1=1, tal2=2; long long summa; while(true) { if(summa > 4000000) { return false; } summa = (tal1 + tal2); cout << "Tal1 = " << tal1 << " Tal2 = " << tal2 << " Summa = " << summa << endl; if(tal1 < tal2) { tal1 = summa; } else { tal2 = summa; } } cout << endl << endl << endl << endl << "Svar = " << summa; cin.get(); cin.get(); return 0; }

Mitt svar :3524578 eller 5702887 beronde på om det är summan som inte får bli över 4miljoner eller om det är en utav värdena (Som jag tror det är) som inte får överstiga 4miljoner.

Tycker båda dessa lösningar ser bra ut då siffrorna stämmer överens med dom 10 första siffrorna som står på deras övningar.

Deras hemsida är http://projecteuler.net/ .

Permalänk
Hedersmedlem

I det första exemplet verkar du inte ta hänsyn till att vissa tal kommer att dyka upp mer än en gång (15 t.ex).

Det andra har jag inte kikat på.

Permalänk
Medlem

Du tänker helt fel i båda exemplen. Såpass mycket fel att det nog är lättare att bara skriva upp hur man gör det rätt istället för att försöka kommentera din kod.

Euler 1

#include <stdio.h> #define LIM 1000 int main(int argc, char **argv) { int n, result; n = result = 0; while (++n < LIM) { if ((n % 3 == 0) || (n % 5 == 0)) result += n; } printf("Result: %d\n", result); return 0; }

Euler 2

#include <stdio.h> #define LIM 4000000 int main(int argc, char **argv) { int n, m, tmp, result; n = 0; m = 1; result = 0; while (n < LIM) { tmp = m; m = m + n; n = tmp; if (n % 2 == 0) result += n; } printf("Result: %d\n", result); return 0; }