制作n个自然数的序列

时间:2013-07-16 11:15:26

标签: c

这里的代码存储了前n个自然数。并且数字的顺序是递增的。现在我们必须打印所有数字,以便a[i]不能被a[j] i>j整除。 这是我写的简单代码。我尝试使用一个循环以O(n)顺序进行。 但它给了垃圾价值。

#include<stdio.h>
main()
{
    int i=1,n;
    printf("enter the numbers \n");
    scanf("%d",&n);
    int a[n];
    for(i=1;i<=n;i++)
    {
        a[i]=i;
        printf("%d\n",a[i]);
    }
    while(a[i+1]>a[i] && a[i+1]%a[i]!=0){
        printf("%d",a[i]);
        i++;
    }
}

4 个答案:

答案 0 :(得分:2)

C阵列中的0n-1。此外,您在进入while循环之前忘记重置i的值。

答案 1 :(得分:2)

使用malloc分配n整数的内存:

int *a = (int *)malloc(sizeof(int) * n); //and check that allocation has succeed

然后,不要忘记C中的数组从零开始所以你的循环应该是:

for(i=0;i<n;i++)

在进入while循环之前,请务必重置i并且i + 1不超过数组限制。

答案 2 :(得分:0)

错误:

1)在输入i循环时检查while的值 - 这是您正在谈论的“垃圾”。

2)n未初始化。您正在使用它来分配数组。

3)数组从零开始。所以在for循环中,应该是i=0;i<n

4)while循环不关心i(或i+1)是<n。可能是一个问题。

至于代码的功能,它没有实现您描述的内容。但是SO不是一种编码服务,它有助于培养你自己编写的编程技巧 - 首先,只需要一支笔和纸,然后考虑程序流程。

HTH。

答案 3 :(得分:0)

输入while循环时,请i=0