描述:
给你一个正整数x判断其是否为斐波那契数,是输入YES,否则输出NO。
斐波那契数列定义 F(1)=1,F(2)=1, F(n)=F(n-1)+F(n-2)(n>2,n∈N*)
#include <stdio.h>
//斐波那数列
int fib(long long n)
{
long long i,n1,n2,s=0;
if(0 > n) return -1;
else if( 1 == n || 2 == n) return 1;
n1=1;n2=1;
for(i=3;s<n; i++){
s=n1+n2;
n1=n2;
n2=s;
}
if (s == n) return 1;
else return 0;
}
int main(int argc, char **argv)
{
long long n;
while(1){
scanf("%lld", &n);
if(0 == n) break;
(fib(n) == 1)?printf("YES\n"):printf("NO\n");
}
return 0;
}