Esercizio 2

Stato
Discussione chiusa ad ulteriori risposte.

imported_ShuraBozz

Utente Silver
20 Ottobre 2008
44
0
0
62
Codice:
Ogni termine nella sequenza di Fibonacci è generato addizionando i precedenti 2 termini. Cominciando con 1 e 2, i primi 10 termini saranno:

[align=center]1, 2, 3, 5, 8, 13, 21, 34, 55, 89, ...[/align]

Trova la somma di tutti i termini pari nella sequenza che non superi i 4 milioni.

Soluzione in C:
http://shurabozz.pastebin.com/f7003a528
 
lulzJS:
Codice:
require("Math/Sequences/Fibonacci");

var fib   = new Fibonacci(4000000);
var total = 0

for (let n in fib) {
    if (n % 2 == 0) {
        total += n
    }
}

print(total)
 
Porting di quello di Shura in PHP:
PHP:
<?php
$i = 0;
$j = 1;
$n = 0;
$sum = 0;

while ($sum < 4000000) {
	if ($j % 2 == 0) {
		$sum += $j;
	}
	$n = $j;
	$j += $i;
	$i = $n;
}
print "Sum: {$sum}\n";
?>
 
La mia versione in C:
Codice:
#include <stdio.h>

main()
{
      int somma=0, nums[3] = {1,2,0}, i=0, x=0;
      while(somma<=4000000)
      {
      nums[2] = nums[0] + nums[1];
      if(nums[0]%2==0)
      somma += nums[0];
      for(x=0;x<2;x++)
      nums[x] = nums[x+1];
      }
      printf("La somma e': %d", somma);
}
 
in java:
Codice:
public class Es2{
    public static void main(String[] args){
        int n1=1,n2=2,n3=2,tot=0;
        for(int i=0;i<4000000;i++){
            if(n3%2==0){
                tot+=n3;
            }
            n3=n2+n1;
            n1=n2;n2=n3;
        }
        System.out.println(tot);
    }
}
 
Posto anch'io il mio in C...
È una notte senza molto da fare... e tra una pausa e l'altra dei playoff NBA ho deciso di darmi a qualche semplice programmino (tipo questo XD)...

Codice:
/* Trova la somma di tutti i termini pari nella sequenza Fibonacci che non superi i 4 milioni */

#include <stdio.h>
#define par_disp(a) ((a%2 == 0)?(1):(0))

int main()
{
    int i=1, n, s=0, l=0;
    while(s <= 4000000)
    {
            if(par_disp(i))
                           s += i;
            n = i;
            i += l;
            l = n;
    }
    printf("The sum is --> %d\n", s);
    getchar();
    return 0;
}
 
Che caruccio il perl :3
Codice:
my ($i, $j, $n, $sum) = (0, 1, 0, 0);
while($sum <= 4000000){
	$sum+=$j if($j % 2 == 0);
	($n, $j, $i) = ($j, $j+$i, $n);
}
print "Result is: $sum\n";
 
Stato
Discussione chiusa ad ulteriori risposte.