求斐波那契数列的素数个数,f(0)=1,,f(1)=1,f(2)=2,……,f(n)=f(n-1)+f(n-2),然后求f(a)与f(b)包括两端之间的素数个数
#include<cstdio>
#include<iostream>
using namespace std;
int f[40];
void fb()
{
f[0]=f[1]=1;
int i;
for(i=2;i<35;i++)
f[i]=f[i-1]+f[i-2];
}
int plist[10000000];
void primeList()
{
int i,j;
plist[0]=plist[1]=0;
for(i=2;i<10000000;i++)
plist[i]=1;
for(i=2;i*i<10000000;i++)
if(plist[i]==1)
for(j=i+i;j<10000000;j=j+i)
plist[j]=0;
}
int main()
{
fb();
primeList();
int count,a,b,i;
while(scanf("%d%d",&a,&b)!=EOF)
{
count=0;
for(i=a;i<=b;i++)
if(plist[f[i]]==1)
count++;
printf("count=%d\n",count);
}
return 0;
}