一、问题描述
二、问题分析
斐波那契数列的计算比较简单,题目重点在于整形的溢出,在进行C/C++实现时,使用 long 还是溢出,最后使用了 long long 才得出答案。而在Python的实现中则无需考虑这么多。
三、代码实现
1.C/C++实现
#include <iostream>
using namespace std;
int getSum(long long n)
{
int sum = 0;
while (n > 0)
{
sum += n % 10;
n /= 10;
}
return sum;
}
int main()
{
long long fib1, fib2;
fib1 = 89;
fib2 = 144;
int count = 0;
long long result[5];
memset(result, 0, sizeof(result));
while (count < 5)
{
fib1 = fib1 + fib2;
if (count < 5 && fib1 % getSum(fib1) == 0)
result[count++] = fib1;
fib2 = fib1 + fib2;
if (count < 5 && fib2 % getSum(fib2) == 0)
result[count++] = fib2;
}
for (int i = 0; i < 5; i++)
cout << result[i] << endl;
return 0;
}
2.Python实现
# coding=utf-8
if __name__ == '__main__':
a, b = 89, 144
result = []
while len(result) < 5:
c = a + b
if c % sum(map(lambda x: int(x), list(str(c)))) == 0:
result.append(c)
a, b = b, c
print(result)