你如何找到一个数的因数并将这些因数保存在 C 的数组中?

How do you find factors of a number and save the factors in an array for C?

    #include<stdio.h>

    int main()
    {
        int x, i, j=0;
        char factors[101];

        printf("Enter a number: ");
        scanf("%d", &x);

        for(i=1;i<=x;i++)
        {
            if(x%i==0)
            {
                factors[j]=i;
                j++;
                printf("%d\t", i);
            }
        }
        getchar();
        printf("%s", factors);

    }

我的目标是找到一个数的因数并将这些因数存储在数组中。

当我 运行 这段代码时,它确实找到了因子,但是当我尝试打印数组时,它打印字符?由于 i 而不是因为数组,所以打印了因子。我该如何解决这个问题,为什么会这样?

改用整数数组即:

#include<stdio.h>

int main()
{
    int x, i, j=0;
    int factors[101];

    printf("Enter a number: ");
    scanf("%d", &x);

    for(i=1;i<=x;i++)
    {
        if(x%i==0)
        {
            factors[j++]=i;
            printf("%d\t", i);
        }
    }
    getchar();
    for(int k =0;k<j;++k)
    printf("%d\n",factors[k]);
}

如果您想将其保留为 char 数组,则还有很多工作要做,因为因子可能大于 10,而一个字符只能表示一位数字。如果您知道您的数字的因数小于 10,那么您可以在原始代码中执行:factors[j]=i+48;。但我不推荐这样做,因为它不是一个真正的解决方案,并且只能在一小部分输入上工作。