dc , 25 22 byte
9k5v1+2/3?*1-^5v/0k2/p
Hãy thử trực tuyến!
Hoặc lưu chương trình trong một tệp và chạy nó bằng cách gõ
dc -f *filename*
Chương trình chấp nhận một số nguyên n không âm trên stdin và nó đưa ra tổng của số n số chẵn đầu tiên trên stdout. (Chuỗi Fibonacci được lấy để bắt đầu bằng 0, theo ví dụ của OP.)
Chương trình này sử dụng công thức (F (3n-1) -1) / 2 cho tổng của các số Fibonacci n chẵn đầu tiên, trong đó F là hàm Fibonacci thông thường, được đưa ra bởi F (0) = 0, F (1) = 1, F (n) = F (n-2) + F (n-1) với n> = 2.
dc là một máy tính dựa trên ngăn xếp. Đây là một lời giải thích chi tiết:
9k # Sets the precision to 9 decimal places (which is more than sufficient).
5v # Push the square root of 5
1+ # Add 1 to the number at the top of the stack.
2/ # Divide the number at the top of the stack by 2.
Tại thời điểm này, số (1 + sqrt (5)) / 2 nằm ở đầu ngăn xếp.
3 # Push 3 on top of the stack.
? # Read a number from stdin, and push it.
\* # Pop two numbers from the stack, multiply them, and push the product
1- # Subtract 1 from the number at the top of the stack.
Tại thời điểm này, 3n-1 nằm ở đầu ngăn xếp (trong đó n là đầu vào) và (1 + sqrt (5)) / 2 là thứ hai từ trên xuống.
^ # Pop two numbers from the stack (x, then y), compute the power y^x, and push that back on the stack.
5v/ # Divide the top of the stack by sqrt(5).
Tại thời điểm này, số ở đầu ngăn xếp là (((1 + sqrt (5)) / 2) ^ (3n-1)) / sqrt (5). Số nguyên gần nhất với số này là F (3n-1). Lưu ý rằng F (3n-1) luôn là số lẻ.
0k # Change precision to 0 decimal places.
2/ # Divide the top of the stack by 2, truncating to an integer.
p # Print the top of the stack on stdout.