f[],直到超過 n (或陣列上限)。m <= f[i] <= n 的元素。#include
int main() {
int f[50]; // 足夠存放 int 範圍內的費氏數
f[0] = 1; f[1] = 1;
int i = 2;
while (1) {
f[i] = f[i-1] + f[i-2];
if (f[i] < 0 || f[i] > 1000000) break; // 防溢位/超界
i++;
}
int len = i;
int m, n; scanf("%d %d", &m, &n);
int first = 1;
for (int j = 0; j < len; j++) {
if (f[j] >= m && f[j] <= n) {
if (!first) printf(" ");
printf("%d", f[j]);
first = 0;
}
}
printf("\n");
return 0;
}
int 最大約 21 億,費氏數第 46 項超界,f[50] 綽綽有餘。f[i] < 0 判斷有號整數溢位 (未定義行為,但常見表現為變負)。m <= n,建議先 if (m > n) swap。first 旗標處理。若 m,n 超過 int 範圍,需用 long long、double 或大整數庫 (GMP/手寫高精度)。