C 1,2,1,3,2,5,3,7,5,11,8,13,13,17... 打印第n个术语

C 1,2,1,3,2,5,3,7,5,11,8,13,13,17... 打印第n个术语,c,C,这个数列中的所有奇数项都是斐波那契数列,所有偶数项都是素数,按升序排列 #include<stdio.h> int main() { int i,n,k,a[100],next,j, P[151],l1,l2,l; //variables scanf("%d", &n); // input the number on terms a[0]=1; a[2]=1; /* Calculaate Fibonacci se

这个数列中的所有奇数项都是斐波那契数列,所有偶数项都是素数,按升序排列

#include<stdio.h>    

int main()
{
    int i,n,k,a[100],next,j, P[151],l1,l2,l;   //variables
    scanf("%d", &n);      // input the number on terms
    a[0]=1;
    a[2]=1;
    /* Calculaate Fibonacci series */
    for(i=4;i<n;i+=2)
        a[i]=a[i-2]+a[i-4];
    for(i=0;i<n;i+=2)
        printf(" %d",a[i]);
    for (i = 2; i <=n; ++i)
        P[i] = 0;
    for (i = 2; i <=n; ++i )
    {
        if (P[i] ==0)
           //printf (" %i", i);
           printf(" %d",i);
        for (j = 1; j*i <= n; j++)
            P[i*j] = 1;
    }
    return 0;
}
#包括
int main()
{
int i,n,k,a[100],next,j,P[151],l1,l2,l;//变量
scanf(“%d”,&n);//按术语输入数字
a[0]=1;
a[2]=1;
/*计算斐波那契级数*/

对于(i=4;i你可以做类似的事情:

void intersperse_print(const int* arr1, const int* arr2, int size)
{
    for (int i = 0; i != size; ++i) {
        printf(" %d %d", arr1[i], arr2[i]);
    }
}
所以一旦你用斐波那契数来填充a和p,用素数来填充, 叫它:


a[0]=1;a[2]=1
是故意的,它是
2
而不是
1
?不清楚你是如何构建序列的。在我看来,排列像
1,2,1,3,1,
这样的数字背后的逻辑是什么(如果我正确理解这个问题的话)。你知道如何生成斐波那契序列吗?你知道如何生成素数吗?使用两个函数:一个用于计算素数,另一个用于计算斐波那契数。你可以对预计算的值使用全局变量来保持它的简单性。我想目标是只打印第n项。@Sandeep:来自标题,是的,但整个问题倾向于“交替打印术语”。我们可以用我们想要的术语数量来替换大小,我想这会解决的
intersperse_print(a, P, 100);