C语言:斐波那契数列中的合数

题目描述

斐波那契数列是一个形如下面的数列:

1,1,2,3,5,8,13,21,34,55,89……

从第3项开始,有:f(n)=f(n-1)+f(n-2)

在这个数列中,有些数是合数,比如8、21、34等,有些数是素数,比如2、3、5、13等。而前面两个1既不是合数也不是素数。

下面请你求出该数列中指定的第n个合数。比如n=1时,对应的数是8;n=2时,对应的数是21。

输入格式

一个正整数n(1≤n≤30)

输出格式

一个正整数,在斐波那契数列中排第n位的合数

#include 
#include 
#include 
int prime(int n)
{
	if(n<=1)
	{
		return 0;
	}else{
		int i;
		int flag=1;
		for(i=2;i<=sqrt(n);i++)
		{
			if(n%i==0)
			{
				flag=0;
			}
		}
		
		if(flag==1)
		{
			return 1;
		}else{
			return 0;
		}
	}
}

int main()
{
	int n;
	scanf("%d",&n);
	
	
	int fib[200]={1,1};
	int i;
	int s=0;
	for(i=2;;i++)
	{
		fib[i]=fib[i-1]+fib[i-2];
		if(prime(fib[i])!=1)
		{
			s++;
		}
		if(s==n)
		{
			printf("%d",fib[i]);
			break;
		}
	}
	return 0;
}

你可能感兴趣的:(c语言,算法,数据结构)