C编程怎么输出想要的数组编号

问题遇到的现象和发生背景

请问这段代码有什么问题吗?我总是得不到b[m]的值
本意是想要在最后arr[i] == 1时输出i,我该怎么改?

用代码块功能插入代码,请勿粘贴截图

```c

#include 
#define LEN 20
int main(){
    //输入一个整数n表示长度
    int n;
    scanf("%d",&n);
    //输入数组,编号,初始为0;
    int arr[LEN] = {0};
    int b[LEN] = {0};
    int i,j;
    for (j = 1; j <= n; j++){
        for ( i = 1; i <= n; i++){
            if ( i % j == 0){
                arr[i] = 1;
            }

            }
        if (arr[i] == 1){
            printf("%d",i);
        }


    }
    int m = 0;
    for ( i = 1; i<= n; i++) {
        if (arr[i] == 1) {
            b[m] = i;
            m++;
        }
    }
    printf("%d ",b[m]);



    return  0;
}






###### 运行结果及报错内容 

![img](https://img-mid.csdnimg.cn/release/static/image/mid/ask/522280109566110.png "#left")

好了,这个问题是我想复杂了,找到规律根本不用搞什么数组😅

21行i的值是n+1

34行换成下面的


for (i = 0; i < m; i++) {
    printf("%d ", b[i]);
}